diff --git a/packages/extension/package.json b/packages/extension/package.json index e4435c65..f5b271cb 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -39,6 +39,7 @@ "@radix-ui/react-toggle-group": "^1.1.7", "@sentry/react": "^9.42.0", "@sentry/vite-plugin": "^4.0.1", + "@supabase/supabase-js": "^2.105.4", "@testing-library/user-event": "^14.6.0", "bowser": "^2.14.1", "class-variance-authority": "^0.7.0", diff --git a/packages/extension/public/_locales/de/messages.json b/packages/extension/public/_locales/de/messages.json index 9f7c9a61..727739f1 100644 --- a/packages/extension/public/_locales/de/messages.json +++ b/packages/extension/public/_locales/de/messages.json @@ -1247,5 +1247,8 @@ }, "Menu_disabled_urlNotMatch": { "message": "Kann auf dieser Seite nicht ausgeführt werden (Seiten-URL stimmt nicht überein)" + }, + "hub_login": { + "message": "Beim Hub anmelden" } } diff --git a/packages/extension/public/_locales/en/messages.json b/packages/extension/public/_locales/en/messages.json index b6a0352f..e5fe3576 100644 --- a/packages/extension/public/_locales/en/messages.json +++ b/packages/extension/public/_locales/en/messages.json @@ -1253,5 +1253,8 @@ }, "Menu_disabled_urlNotMatch": { "message": "Cannot run on this page (page URL does not match)" + }, + "hub_login": { + "message": "Login to Hub" } } diff --git a/packages/extension/public/_locales/es/messages.json b/packages/extension/public/_locales/es/messages.json index 7aadf686..a260159f 100644 --- a/packages/extension/public/_locales/es/messages.json +++ b/packages/extension/public/_locales/es/messages.json @@ -1247,5 +1247,8 @@ }, "Menu_disabled_urlNotMatch": { "message": "No se puede ejecutar en esta página (la URL de la página no coincide)" + }, + "hub_login": { + "message": "Iniciar sesión en Hub" } } diff --git a/packages/extension/public/_locales/fr/messages.json b/packages/extension/public/_locales/fr/messages.json index ca4c32f1..aa7ef4ca 100644 --- a/packages/extension/public/_locales/fr/messages.json +++ b/packages/extension/public/_locales/fr/messages.json @@ -1247,5 +1247,8 @@ }, "Menu_disabled_urlNotMatch": { "message": "Impossible d'exécuter sur cette page (l'URL de la page ne correspond pas)" + }, + "hub_login": { + "message": "Se connecter au Hub" } } diff --git a/packages/extension/public/_locales/hi/messages.json b/packages/extension/public/_locales/hi/messages.json index abd92477..fa850923 100644 --- a/packages/extension/public/_locales/hi/messages.json +++ b/packages/extension/public/_locales/hi/messages.json @@ -1247,5 +1247,8 @@ }, "Menu_disabled_urlNotMatch": { "message": "इस पेज पर नहीं चला सकते (पृष्ठ URL मेल नहीं खाता)" + }, + "hub_login": { + "message": "Hub में लॉगिन करें" } } diff --git a/packages/extension/public/_locales/id/messages.json b/packages/extension/public/_locales/id/messages.json index effb3a26..cb7470f0 100644 --- a/packages/extension/public/_locales/id/messages.json +++ b/packages/extension/public/_locales/id/messages.json @@ -1250,5 +1250,8 @@ }, "Menu_disabled_urlNotMatch": { "message": "Tidak dapat dijalankan di halaman ini (URL Halaman tidak cocok)" + }, + "hub_login": { + "message": "Masuk ke Hub" } } diff --git a/packages/extension/public/_locales/it/messages.json b/packages/extension/public/_locales/it/messages.json index ca533b2a..0761f14e 100644 --- a/packages/extension/public/_locales/it/messages.json +++ b/packages/extension/public/_locales/it/messages.json @@ -1247,5 +1247,8 @@ }, "Menu_disabled_urlNotMatch": { "message": "Impossibile eseguire su questa pagina (l'URL della pagina non corrisponde)" + }, + "hub_login": { + "message": "Accedi all'Hub" } } diff --git a/packages/extension/public/_locales/ja/messages.json b/packages/extension/public/_locales/ja/messages.json index 3ac84d7e..0a6d9b0d 100644 --- a/packages/extension/public/_locales/ja/messages.json +++ b/packages/extension/public/_locales/ja/messages.json @@ -1244,5 +1244,8 @@ }, "Menu_disabled_urlNotMatch": { "message": "このページでは実行できません(ページURLが一致しません)" + }, + "hub_login": { + "message": "Hubへログイン" } } diff --git a/packages/extension/public/_locales/ko/messages.json b/packages/extension/public/_locales/ko/messages.json index 75c61c9f..4506ca8f 100644 --- a/packages/extension/public/_locales/ko/messages.json +++ b/packages/extension/public/_locales/ko/messages.json @@ -1247,5 +1247,8 @@ }, "Menu_disabled_urlNotMatch": { "message": "이 페이지에서 실행할 수 없습니다 (페이지 URL이 일치하지 않습니다)" + }, + "hub_login": { + "message": "Hub에 로그인" } } diff --git a/packages/extension/public/_locales/ms/messages.json b/packages/extension/public/_locales/ms/messages.json index dcaefb80..f63a4191 100644 --- a/packages/extension/public/_locales/ms/messages.json +++ b/packages/extension/public/_locales/ms/messages.json @@ -1250,5 +1250,8 @@ }, "Menu_disabled_urlNotMatch": { "message": "Tidak boleh dijalankan pada halaman ini (URL Halaman tidak sepadan)" + }, + "hub_login": { + "message": "Log masuk ke Hub" } } diff --git a/packages/extension/public/_locales/pt_BR/messages.json b/packages/extension/public/_locales/pt_BR/messages.json index 63f2af3b..64886c1e 100644 --- a/packages/extension/public/_locales/pt_BR/messages.json +++ b/packages/extension/public/_locales/pt_BR/messages.json @@ -1250,5 +1250,8 @@ }, "Menu_disabled_urlNotMatch": { "message": "Não é possível executar nesta página (URL da página não corresponde)" + }, + "hub_login": { + "message": "Entrar no Hub" } } diff --git a/packages/extension/public/_locales/pt_PT/messages.json b/packages/extension/public/_locales/pt_PT/messages.json index 419f1a3e..c9b6c219 100644 --- a/packages/extension/public/_locales/pt_PT/messages.json +++ b/packages/extension/public/_locales/pt_PT/messages.json @@ -1250,5 +1250,8 @@ }, "Menu_disabled_urlNotMatch": { "message": "Não é possível executar nesta página (URL da página não corresponde)" + }, + "hub_login": { + "message": "Iniciar sessão no Hub" } } diff --git a/packages/extension/public/_locales/ru/messages.json b/packages/extension/public/_locales/ru/messages.json index 31c98caa..4ddd1c5d 100644 --- a/packages/extension/public/_locales/ru/messages.json +++ b/packages/extension/public/_locales/ru/messages.json @@ -1247,5 +1247,8 @@ }, "Menu_disabled_urlNotMatch": { "message": "Невозможно выполнить на этой странице (URL страницы не совпадает)" + }, + "hub_login": { + "message": "Войти в Hub" } } diff --git a/packages/extension/public/_locales/zh_CN/messages.json b/packages/extension/public/_locales/zh_CN/messages.json index 8adb75f2..f3c365c9 100644 --- a/packages/extension/public/_locales/zh_CN/messages.json +++ b/packages/extension/public/_locales/zh_CN/messages.json @@ -1247,5 +1247,8 @@ }, "Menu_disabled_urlNotMatch": { "message": "无法在此页面运行(页面URL不匹配)" + }, + "hub_login": { + "message": "登录 Hub" } } diff --git a/packages/extension/src/components/option/HubBanner.module.css b/packages/extension/src/components/option/HubBanner.module.css index 7f1c8da0..7b7ed397 100644 --- a/packages/extension/src/components/option/HubBanner.module.css +++ b/packages/extension/src/components/option/HubBanner.module.css @@ -19,3 +19,17 @@ font-size: 0.8rem; padding-left: 4px; } + +.userInfo { + @apply flex items-center gap-2; +} + +.userAvatar { + @apply rounded-full; + object-fit: cover; +} + +.userName { + @apply font-mono text-gray-700; + font-size: 0.85rem; +} diff --git a/packages/extension/src/components/option/HubBanner.tsx b/packages/extension/src/components/option/HubBanner.tsx index 334ea70f..53b33948 100644 --- a/packages/extension/src/components/option/HubBanner.tsx +++ b/packages/extension/src/components/option/HubBanner.tsx @@ -4,16 +4,15 @@ import { t } from "@/services/i18n" import { cn } from "@/lib/utils" import { HUB_URL } from "@/const" +const HUB_BANNER_LINK = `${HUB_URL}?utm_source=optionPage&utm_medium=banner` + export function HubBanner() { return (

Sharing Commands

- + (null) + + useEffect(() => { + Storage.get(LOCAL_STORAGE_KEY.HUB_USER).then(setHubUser) + + const unsubscribe = Storage.addListener( + LOCAL_STORAGE_KEY.HUB_USER, + (newVal) => setHubUser(newVal), + ) + return unsubscribe + }, []) + + if (hubUser) { + return ( +
+ {hubUser.name} { + e.currentTarget.style.display = "none" + }} + /> + {hubUser.name} +
+ ) + } + + return ( +
+ + {t("hub_login")} + + ) +} diff --git a/packages/extension/src/components/option/Option.tsx b/packages/extension/src/components/option/Option.tsx index be47f1a5..c2388f9a 100644 --- a/packages/extension/src/components/option/Option.tsx +++ b/packages/extension/src/components/option/Option.tsx @@ -10,6 +10,7 @@ import { ImportExport } from "@/components/option/ImportExport" import { UserSupport } from "@/components/option/UserSupport" import { DeveloperSupport } from "@/components/option/DeveloperSupport" import { HubBanner } from "@/components/option/HubBanner" +import { HubUserInfo } from "@/components/option/HubUserInfo" import { SettingForm } from "@/components/option/SettingForm" import StorageUsage from "@/components/option/StorageUsage" import { PromptHistoryBanner } from "@/components/option/PromptHistoryBanner" @@ -59,6 +60,9 @@ export function Option() { })} Version: {VERSION} +
+ +