From 9f29043e47e514268c0f798f15150309251026de Mon Sep 17 00:00:00 2001 From: SrGooglo Date: Mon, 16 Jun 2025 23:16:08 +0000 Subject: [PATCH] Move hooks to single files --- packages/app/src/hooks/onPageMount.js | 92 +++++++++++++++++++ .../index.js => useCenteredContainer.js} | 0 .../hooks/{useChat/index.js => useChat.js} | 0 .../index.js => useClickNavById.js} | 0 .../index.js => useCoverAnalysis.js} | 0 .../{useDebounce/index.js => useDebounce.js} | 0 .../index.js => useDefaultVisibility.js} | 0 .../index.js => useFullScreen.js} | 0 .../index.js => useGetMainOrigin.js} | 0 .../hooks/{useHacks/index.js => useHacks.js} | 0 .../index.jsx => useHideOnMouseStop.jsx} | 0 .../index.js => useHideToolsBar.js} | 0 .../index.js => useLayoutInterface.js} | 0 .../index.jsx => useLongPress.jsx} | 0 .../{useLyrics/index.js => useLyrics.js} | 0 .../index.js => useMaxScreen.js} | 0 .../index.js => usePageWidgets.js} | 0 ...ex.js => useRandomFeaturedWallpaperUrl.js} | 0 .../{useSyncRoom/index.js => useSyncRoom.js} | 0 .../index.jsx => useTextRoom.jsx} | 0 .../{useTopBar/index.jsx => useTopBar.jsx} | 0 .../index.js => useTotalWindowHeight.js} | 0 .../index.js => useTrackManifest.js} | 0 .../index.js => useUrlQueryActiveKey.js} | 0 .../index.jsx => useUserRemoteConfig.jsx} | 0 .../{useWsEvents/index.js => useWsEvents.js} | 0 26 files changed, 92 insertions(+) create mode 100644 packages/app/src/hooks/onPageMount.js rename packages/app/src/hooks/{useCenteredContainer/index.js => useCenteredContainer.js} (100%) rename packages/app/src/hooks/{useChat/index.js => useChat.js} (100%) rename packages/app/src/hooks/{useClickNavById/index.js => useClickNavById.js} (100%) rename packages/app/src/hooks/{useCoverAnalysis/index.js => useCoverAnalysis.js} (100%) rename packages/app/src/hooks/{useDebounce/index.js => useDebounce.js} (100%) rename packages/app/src/hooks/{useDefaultVisibility/index.js => useDefaultVisibility.js} (100%) rename packages/app/src/hooks/{useFullScreen/index.js => useFullScreen.js} (100%) rename packages/app/src/hooks/{useGetMainOrigin/index.js => useGetMainOrigin.js} (100%) rename packages/app/src/hooks/{useHacks/index.js => useHacks.js} (100%) rename packages/app/src/hooks/{useHideOnMouseStop/index.jsx => useHideOnMouseStop.jsx} (100%) rename packages/app/src/hooks/{useHideToolsBar/index.js => useHideToolsBar.js} (100%) rename packages/app/src/hooks/{useLayoutInterface/index.js => useLayoutInterface.js} (100%) rename packages/app/src/hooks/{useLongPress/index.jsx => useLongPress.jsx} (100%) rename packages/app/src/hooks/{useLyrics/index.js => useLyrics.js} (100%) rename packages/app/src/hooks/{useMaxScreen/index.js => useMaxScreen.js} (100%) rename packages/app/src/hooks/{usePageWidgets/index.js => usePageWidgets.js} (100%) rename packages/app/src/hooks/{useRandomFeaturedWallpaperUrl/index.js => useRandomFeaturedWallpaperUrl.js} (100%) rename packages/app/src/hooks/{useSyncRoom/index.js => useSyncRoom.js} (100%) rename packages/app/src/hooks/{useTextRoom/index.jsx => useTextRoom.jsx} (100%) rename packages/app/src/hooks/{useTopBar/index.jsx => useTopBar.jsx} (100%) rename packages/app/src/hooks/{useTotalWindowHeight/index.js => useTotalWindowHeight.js} (100%) rename packages/app/src/hooks/{useTrackManifest/index.js => useTrackManifest.js} (100%) rename packages/app/src/hooks/{useUrlQueryActiveKey/index.js => useUrlQueryActiveKey.js} (100%) rename packages/app/src/hooks/{useUserRemoteConfig/index.jsx => useUserRemoteConfig.jsx} (100%) rename packages/app/src/hooks/{useWsEvents/index.js => useWsEvents.js} (100%) diff --git a/packages/app/src/hooks/onPageMount.js b/packages/app/src/hooks/onPageMount.js new file mode 100644 index 00000000..dc532e89 --- /dev/null +++ b/packages/app/src/hooks/onPageMount.js @@ -0,0 +1,92 @@ +import config from "@config" + +const isAuthenticated = () => { + return !!app.userData +} + +const handleAuthentication = (declaration) => { + if ( + !isAuthenticated() && + !declaration.public && + window.location.pathname !== config.app?.authPath + ) { + const authPath = config.app?.authPath ?? "/login" + + if (typeof window.app?.location?.push === "function") { + window.app.location.push(authPath) + + if (app.cores?.notifications?.new) { + app.cores.notifications.new({ + title: "Please login to use this feature.", + duration: 15, + }) + } + } else { + window.location.href = authPath + } + + return false + } + return true +} + +const handleLayout = (declaration) => { + if (declaration.useLayout && app.layout?.set) { + app.layout.set(declaration.useLayout) + } +} + +const handleCenteredContent = (declaration) => { + if ( + typeof declaration.centeredContent !== "undefined" && + app.layout?.toggleCenteredContent + ) { + let finalBool = null + + if (typeof declaration.centeredContent === "boolean") { + finalBool = declaration.centeredContent + } else { + finalBool = app.isMobile + ? (declaration.centeredContent?.mobile ?? null) + : (declaration.centeredContent?.desktop ?? null) + } + + app.layout.toggleCenteredContent(finalBool) + } +} + +const handleTitle = (declaration) => { + if (typeof declaration.useTitle !== "undefined") { + let title = declaration.useTitle + + document.title = `${title} - ${config.app.siteName}` + } else { + document.title = config.app.siteName + } +} + +export default ({ element, declaration }) => { + const options = element.options ?? {} + + // Handle authentication first + const isAuthorized = handleAuthentication(declaration) + + if (isAuthorized) { + handleLayout(declaration) + handleCenteredContent(declaration) + handleTitle(declaration) + } + + if (options.layout) { + if (typeof options.layout.type === "string" && app.layout?.set) { + app.layout.set(options.layout.type) + } + + if ( + typeof options.layout.centeredContent === "boolean" && + app.layout?.toggleCenteredContent + ) { + app.layout.toggleCenteredContent() + } + } +} diff --git a/packages/app/src/hooks/useCenteredContainer/index.js b/packages/app/src/hooks/useCenteredContainer.js similarity index 100% rename from packages/app/src/hooks/useCenteredContainer/index.js rename to packages/app/src/hooks/useCenteredContainer.js diff --git a/packages/app/src/hooks/useChat/index.js b/packages/app/src/hooks/useChat.js similarity index 100% rename from packages/app/src/hooks/useChat/index.js rename to packages/app/src/hooks/useChat.js diff --git a/packages/app/src/hooks/useClickNavById/index.js b/packages/app/src/hooks/useClickNavById.js similarity index 100% rename from packages/app/src/hooks/useClickNavById/index.js rename to packages/app/src/hooks/useClickNavById.js diff --git a/packages/app/src/hooks/useCoverAnalysis/index.js b/packages/app/src/hooks/useCoverAnalysis.js similarity index 100% rename from packages/app/src/hooks/useCoverAnalysis/index.js rename to packages/app/src/hooks/useCoverAnalysis.js diff --git a/packages/app/src/hooks/useDebounce/index.js b/packages/app/src/hooks/useDebounce.js similarity index 100% rename from packages/app/src/hooks/useDebounce/index.js rename to packages/app/src/hooks/useDebounce.js diff --git a/packages/app/src/hooks/useDefaultVisibility/index.js b/packages/app/src/hooks/useDefaultVisibility.js similarity index 100% rename from packages/app/src/hooks/useDefaultVisibility/index.js rename to packages/app/src/hooks/useDefaultVisibility.js diff --git a/packages/app/src/hooks/useFullScreen/index.js b/packages/app/src/hooks/useFullScreen.js similarity index 100% rename from packages/app/src/hooks/useFullScreen/index.js rename to packages/app/src/hooks/useFullScreen.js diff --git a/packages/app/src/hooks/useGetMainOrigin/index.js b/packages/app/src/hooks/useGetMainOrigin.js similarity index 100% rename from packages/app/src/hooks/useGetMainOrigin/index.js rename to packages/app/src/hooks/useGetMainOrigin.js diff --git a/packages/app/src/hooks/useHacks/index.js b/packages/app/src/hooks/useHacks.js similarity index 100% rename from packages/app/src/hooks/useHacks/index.js rename to packages/app/src/hooks/useHacks.js diff --git a/packages/app/src/hooks/useHideOnMouseStop/index.jsx b/packages/app/src/hooks/useHideOnMouseStop.jsx similarity index 100% rename from packages/app/src/hooks/useHideOnMouseStop/index.jsx rename to packages/app/src/hooks/useHideOnMouseStop.jsx diff --git a/packages/app/src/hooks/useHideToolsBar/index.js b/packages/app/src/hooks/useHideToolsBar.js similarity index 100% rename from packages/app/src/hooks/useHideToolsBar/index.js rename to packages/app/src/hooks/useHideToolsBar.js diff --git a/packages/app/src/hooks/useLayoutInterface/index.js b/packages/app/src/hooks/useLayoutInterface.js similarity index 100% rename from packages/app/src/hooks/useLayoutInterface/index.js rename to packages/app/src/hooks/useLayoutInterface.js diff --git a/packages/app/src/hooks/useLongPress/index.jsx b/packages/app/src/hooks/useLongPress.jsx similarity index 100% rename from packages/app/src/hooks/useLongPress/index.jsx rename to packages/app/src/hooks/useLongPress.jsx diff --git a/packages/app/src/hooks/useLyrics/index.js b/packages/app/src/hooks/useLyrics.js similarity index 100% rename from packages/app/src/hooks/useLyrics/index.js rename to packages/app/src/hooks/useLyrics.js diff --git a/packages/app/src/hooks/useMaxScreen/index.js b/packages/app/src/hooks/useMaxScreen.js similarity index 100% rename from packages/app/src/hooks/useMaxScreen/index.js rename to packages/app/src/hooks/useMaxScreen.js diff --git a/packages/app/src/hooks/usePageWidgets/index.js b/packages/app/src/hooks/usePageWidgets.js similarity index 100% rename from packages/app/src/hooks/usePageWidgets/index.js rename to packages/app/src/hooks/usePageWidgets.js diff --git a/packages/app/src/hooks/useRandomFeaturedWallpaperUrl/index.js b/packages/app/src/hooks/useRandomFeaturedWallpaperUrl.js similarity index 100% rename from packages/app/src/hooks/useRandomFeaturedWallpaperUrl/index.js rename to packages/app/src/hooks/useRandomFeaturedWallpaperUrl.js diff --git a/packages/app/src/hooks/useSyncRoom/index.js b/packages/app/src/hooks/useSyncRoom.js similarity index 100% rename from packages/app/src/hooks/useSyncRoom/index.js rename to packages/app/src/hooks/useSyncRoom.js diff --git a/packages/app/src/hooks/useTextRoom/index.jsx b/packages/app/src/hooks/useTextRoom.jsx similarity index 100% rename from packages/app/src/hooks/useTextRoom/index.jsx rename to packages/app/src/hooks/useTextRoom.jsx diff --git a/packages/app/src/hooks/useTopBar/index.jsx b/packages/app/src/hooks/useTopBar.jsx similarity index 100% rename from packages/app/src/hooks/useTopBar/index.jsx rename to packages/app/src/hooks/useTopBar.jsx diff --git a/packages/app/src/hooks/useTotalWindowHeight/index.js b/packages/app/src/hooks/useTotalWindowHeight.js similarity index 100% rename from packages/app/src/hooks/useTotalWindowHeight/index.js rename to packages/app/src/hooks/useTotalWindowHeight.js diff --git a/packages/app/src/hooks/useTrackManifest/index.js b/packages/app/src/hooks/useTrackManifest.js similarity index 100% rename from packages/app/src/hooks/useTrackManifest/index.js rename to packages/app/src/hooks/useTrackManifest.js diff --git a/packages/app/src/hooks/useUrlQueryActiveKey/index.js b/packages/app/src/hooks/useUrlQueryActiveKey.js similarity index 100% rename from packages/app/src/hooks/useUrlQueryActiveKey/index.js rename to packages/app/src/hooks/useUrlQueryActiveKey.js diff --git a/packages/app/src/hooks/useUserRemoteConfig/index.jsx b/packages/app/src/hooks/useUserRemoteConfig.jsx similarity index 100% rename from packages/app/src/hooks/useUserRemoteConfig/index.jsx rename to packages/app/src/hooks/useUserRemoteConfig.jsx diff --git a/packages/app/src/hooks/useWsEvents/index.js b/packages/app/src/hooks/useWsEvents.js similarity index 100% rename from packages/app/src/hooks/useWsEvents/index.js rename to packages/app/src/hooks/useWsEvents.js