Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { inject, injectable } from 'inversify';
  2. import { Store } from 'vuex';
  3.  
  4. import { toggleBundleType } from '@app/bundles/toggle/toggle.bundle.type';
  5. import { ToggleModuleGetter } from './toggle.getter';
  6. import { ToggleModuleMutation } from './toggle.mutation';
  7. import { BasePayload, togglePayloadFactory } from './toggle.payload';
  8.  
  9. @injectable()
  10. export class ToggleDao {
  11.  
  12.     constructor(
  13.         @inject(toggleBundleType.ToggleModuleNamespace)
  14.         protected ns: string,
  15.         @inject(Store)
  16.         protected store: Store<any>,
  17.     ) {}
  18.  
  19.     public attach(name: string, visible: boolean): void {
  20.         this.commit('attach', togglePayloadFactory.model(name, visible));
  21.     }
  22.  
  23.     public show(...names: string[]): void {
  24.         names.forEach(name => this.commit('show', togglePayloadFactory.base(name)));
  25.     }
  26.  
  27.     public hide(...names: string[]): void {
  28.         names.forEach(name => this.commit('hide', togglePayloadFactory.base(name)));
  29.     }
  30.  
  31.     public toggle(...names: string[]): void {
  32.         names.forEach(name => this.commit('toggle', togglePayloadFactory.base(name)));
  33.     }
  34.  
  35.     public isSomeVisible(...names: string[]): boolean {
  36.         return this.isRegistered(...names) && names.some(name => !!this.getter('isVisible', name));
  37.     }
  38.  
  39.     public isEveryVisible(...names: string[]): boolean {
  40.         return this.isRegistered(...names) && names.every(name => !!this.getter('isVisible', name));
  41.     }
  42.  
  43.     public isRegistered(...names: string[]): boolean {
  44.         return names.every(name => !!this.getter('isRegistered', name));
  45.     }
  46.  
  47.     protected getter(key: keyof ToggleModuleGetter, name: string): any {
  48.         return this.store.getters[this.wrap(key)](name);
  49.     }
  50.  
  51.     protected commit<Payload extends BasePayload>(
  52.         key: keyof ToggleModuleMutation,
  53.         payload: Payload,
  54.     ): void {
  55.         this.store.commit(this.wrap(key), payload);
  56.     }
  57.  
  58.     protected wrap(key: string): string {
  59.         return `${this.ns}/${key}`;
  60.     }
  61.  
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement