From cf604638c550af05be796030de3b5b8cc2e86602 Mon Sep 17 00:00:00 2001 From: Kevin Williams <2096779623@qq.com> Date: Wed, 3 May 2023 04:05:02 +0800 Subject: [PATCH] feat: add Umami Cloud Analysis (#476) --- public/locales/ja/dashboard.json | 1 + public/locales/zh-TW/dashboard.json | 1 + public/locales/zh/dashboard.json | 1 + src/components/site/SiteFooter.tsx | 10 +++++++ src/lib/expand-unit.ts | 4 +++ src/lib/types.ts | 1 + src/models/site.model.ts | 10 +++++++ .../[subdomain]/settings/general.tsx | 27 +++++++++++++++++++ 8 files changed, 55 insertions(+) diff --git a/public/locales/ja/dashboard.json b/public/locales/ja/dashboard.json index d08a1f74..ffb833bb 100644 --- a/public/locales/ja/dashboard.json +++ b/public/locales/ja/dashboard.json @@ -85,6 +85,7 @@ "Name": "名前", "Description": "説明", "Integrate Google Analytics": "Google Analytics と紐付けします。Measurement ID の検索方法については、<2>こちらの文章をご覧ください。", + "Integrate Umami Cloud Analytics": "Umami Cloud Analytics と紐付けします。Website ID の検索方法については、<2>こちらの文章をご覧ください。", "Save": "保存", "Tips": "ヒント", "social tips": { diff --git a/public/locales/zh-TW/dashboard.json b/public/locales/zh-TW/dashboard.json index 6e869fe5..8d169035 100644 --- a/public/locales/zh-TW/dashboard.json +++ b/public/locales/zh-TW/dashboard.json @@ -90,6 +90,7 @@ "Name": "名稱", "Description": "自我介紹", "Integrate Google Analytics": "將 Google Analytics 整合至你的網站中。請按照<2>這裡的說明查找你的 Measurement ID。", + "Integrate Umami Cloud Analytics": "將 Umami Cloud Analytics 整合至你的網站中。請按照<2>這裡的說明查找你的 Website ID。", "Save": "儲存", "Tips": "提示", "social tips": { diff --git a/public/locales/zh/dashboard.json b/public/locales/zh/dashboard.json index 556b4313..017a6a5e 100644 --- a/public/locales/zh/dashboard.json +++ b/public/locales/zh/dashboard.json @@ -91,6 +91,7 @@ "Name": "名称", "Description": "描述", "Integrate Google Analytics": "将 Google Analytics 集成到你的站点中。你可以按照<2>这里的说明查找你的 Measurement ID。", + "Integrate Umami Cloud Analytics": "将 Umami Cloud Analytics 集成到你的站点中。你可以按照<2>这里的说明查找你的 Website ID。", "Save": "保存", "Tips": "提示", "social tips": { diff --git a/src/components/site/SiteFooter.tsx b/src/components/site/SiteFooter.tsx index 137700de..db0d96b0 100644 --- a/src/components/site/SiteFooter.tsx +++ b/src/components/site/SiteFooter.tsx @@ -89,6 +89,16 @@ export const SiteFooter: React.FC<{ )} + {site?.metadata?.content?.ua && ( +
+ +
+ )} ) } diff --git a/src/lib/expand-unit.ts b/src/lib/expand-unit.ts index 3e49545a..7360d473 100644 --- a/src/lib/expand-unit.ts +++ b/src/lib/expand-unit.ts @@ -103,6 +103,10 @@ export const expandCrossbellCharacter = (site: CharacterEntity) => { (expandedCharacter.metadata?.content?.attributes?.find( (a: any) => a.trait_type === "xlog_ga", )?.value as string) || "" + expandedCharacter.metadata.content.ua = + (expandedCharacter.metadata?.content?.attributes?.find( + (a: any) => a.trait_type === "xlog_ua", + )?.value as string) || "" expandedCharacter.metadata.content.custom_domain = (expandedCharacter.metadata?.content?.attributes?.find( (a: any) => a.trait_type === "xlog_custom_domain", diff --git a/src/lib/types.ts b/src/lib/types.ts index f8d41dd5..0b9b6e7f 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -101,6 +101,7 @@ export type ExpandedCharacter = CharacterEntity & { navigation?: SiteNavigationItem[] css?: string ga?: string + ua?: string custom_domain?: string } } diff --git a/src/models/site.model.ts b/src/models/site.model.ts index 8773c36e..3d112190 100644 --- a/src/models/site.model.ts +++ b/src/models/site.model.ts @@ -106,6 +106,7 @@ export async function updateSite( navigation?: SiteNavigationItem[] css?: string ga?: string + ua?: string custom_domain?: string banner?: { address: string @@ -141,6 +142,7 @@ export async function updateSite( ...((payload.navigation !== undefined || payload.css !== undefined || payload.ga !== undefined || + payload.ua !== undefined || payload.custom_domain !== undefined) && { attributes: [ ...(payload.navigation !== undefined @@ -167,6 +169,14 @@ export async function updateSite( }, ] : []), + ...(payload.ua !== undefined + ? [ + { + trait_type: "xlog_ua", + value: payload.ua, + }, + ] + : []), ...(payload.custom_domain !== undefined ? [ { diff --git a/src/pages/dashboard/[subdomain]/settings/general.tsx b/src/pages/dashboard/[subdomain]/settings/general.tsx index e4aa3529..e7ca85a1 100644 --- a/src/pages/dashboard/[subdomain]/settings/general.tsx +++ b/src/pages/dashboard/[subdomain]/settings/general.tsx @@ -45,6 +45,7 @@ export default function SiteSettingsGeneralPage() { name: "", description: "", ga: "", + ua: "", } as { icon: string banner?: { @@ -54,6 +55,7 @@ export default function SiteSettingsGeneralPage() { name: string description: string ga: string + ua: string }, }) @@ -65,6 +67,7 @@ export default function SiteSettingsGeneralPage() { name: values.name, description: values.description, ga: values.ga, + ua: values.ua, }) }) @@ -105,6 +108,8 @@ export default function SiteSettingsGeneralPage() { form.setValue("description", site.data.metadata?.content?.bio || "") !form.getValues("ga") && form.setValue("ga", site.data.metadata?.content?.ga || "") + !form.getValues("ua") && + form.setValue("ua", site.data.metadata?.content?.ua || "") } }, [site.data, form]) @@ -211,6 +216,28 @@ export default function SiteSettingsGeneralPage() { } /> +
+ + + Integrate Umami Cloud Analytics into your site. You can follow the + instructions{" "} + + here + {" "} + to find your Website ID. + +

+ } + /> +