igara/syonet_seven

View on GitHub
nodejs/www/states/common/sidebar.ts

Summary

Maintainability
A
55 mins
Test Coverage
import { reducerWithInitialState } from "typescript-fsa-reducers";
import { footerActions } from "@www/actions/common/footer";
import { sidebarActions } from "@www/actions/common/sidebar";
import { linkActions } from "@www/actions/common/link";

export type SidebarState = {
  dispFlag: boolean;
  chengedDispFlag: boolean;
};

const initialState: SidebarState = {
  dispFlag: false,
  chengedDispFlag: false,
};

export const sidebarReducer = reducerWithInitialState(initialState)
  /**
   * LinkIconを押下したときの処理
   */
  .case(footerActions.onClickLinkIcon, state => {
    return { ...state, dispFlag: true, chengedDispFlag: true };
  })
  /**
   * 閉じるを押下したときの処理
   */
  .case(sidebarActions.onClickClose, state => {
    return { ...state, dispFlag: false, chengedDispFlag: true };
  })
  /**
   * ホームを押下したときの処理
   */
  .case(sidebarActions.onClickHome, state => {
    return { ...state, dispFlag: false, chengedDispFlag: true };
  })
  /**
   * ログインを押下したときの処理
   */
  .case(sidebarActions.onClickLogin, state => {
    return { ...state, dispFlag: false, chengedDispFlag: true };
  })
  /**
   * ログアウトを押下したときの処理
   */
  .case(sidebarActions.onClickLogout, state => {
    return { ...state, dispFlag: false, chengedDispFlag: true };
  })
  /**
   * ツールを押下したときの処理
   */
  .case(sidebarActions.onClickTools, state => {
    return { ...state, dispFlag: false, chengedDispFlag: true };
  })
  .case(linkActions.onClickLink, state => {
    return { ...state, dispFlag: false, chengedDispFlag: false };
  })
  /**
   * キャッシュクリアを押下した時
   */
  .case(sidebarActions.onClickCacheClear, state => {
    // eslint-disable-next-line no-undef
    if (typeof navigator !== "undefined" && typeof navigator.serviceWorker !== "undefined") {
      // eslint-disable-next-line no-undef
      navigator.serviceWorker.getRegistrations().then(registrations => {
        // 登録されているworkerを全て削除する
        registrations.forEach(registration => {
          registration.unregister();
        });
        // eslint-disable-next-line no-undef
        caches.keys().then(keys => {
          // キャッシュストレージを全て削除する
          keys.forEach(cacheName => {
            if (cacheName) {
              // eslint-disable-next-line no-undef
              caches.delete(cacheName);
            }
          });
        });
      });
    }
    return { ...state, dispFlag: false };
  });