Skip to content

Commit 2f87870

Browse files
committed
feat(desktop): get client messaging token
1 parent 65b648b commit 2f87870

File tree

5 files changed

+33
-1
lines changed

5 files changed

+33
-1
lines changed

apps/desktop/layer/main/src/lib/user.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export const updateNotificationsToken = async (newCredentials?: Credentials) =>
3030
} catch (error) {
3131
logger.error("updateNotificationsToken error: ", error)
3232
}
33+
logger.info("updateNotificationsToken success: ", credentials.fcm.token)
3334
}
3435
}
3536

apps/desktop/layer/main/src/tipc/setting.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,7 @@ export const settingRoute = {
5151
updateProxy()
5252
return result
5353
}),
54+
getMessagingToken: t.procedure.action(async () => {
55+
return store.get("notifications-credentials")
56+
}),
5457
}

apps/desktop/layer/renderer/src/modules/action/target-action-list.tsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,15 @@ import {
2121
} from "~/components/ui/dropdown-menu/dropdown-menu"
2222
import { actionActions, useActionByIndex } from "~/store/action"
2323

24+
import { useSettingModal } from "../settings/modal/use-setting-modal"
25+
2426
type Action = {
2527
title: string
2628
icon: React.ReactNode
2729
config?: () => React.ReactNode
2830
configInline?: boolean
2931
enabled: boolean
32+
settingsPath?: string
3033
onInit: (data: ActionModel) => void
3134
onRemove: (data: ActionModel) => void
3235
}
@@ -65,6 +68,7 @@ export const TargetActionList = ({ index }: { index: number }) => {
6568
const star = useActionByIndex(index, (a) => a.result.star)
6669
const rewriteRules = useActionByIndex(index, (a) => a.result.rewriteRules)
6770
const webhooks = useActionByIndex(index, (a) => a.result.webhooks)
71+
const settingModalPresent = useSettingModal()
6872

6973
const disabled = useActionByIndex(index, (a) => a.result.disabled)
7074
const { t } = useTranslation("settings")
@@ -77,6 +81,7 @@ export const TargetActionList = ({ index }: { index: number }) => {
7781
title: t("actions.action_card.generate_summary"),
7882
icon: <i className="i-mgc-ai-cute-re" />,
7983
enabled: !!summary,
84+
settingsPath: "general",
8085
onInit: (data) => {
8186
data.result.summary = true
8287
},
@@ -88,6 +93,7 @@ export const TargetActionList = ({ index }: { index: number }) => {
8893
title: t("actions.action_card.translate_into"),
8994
icon: <i className="i-mgc-translate-2-ai-cute-re" />,
9095
enabled: !!translation,
96+
settingsPath: "general",
9197
onInit: (data) => {
9298
data.result.translation = true
9399
},
@@ -120,6 +126,7 @@ export const TargetActionList = ({ index }: { index: number }) => {
120126
{
121127
title: t("actions.action_card.new_entry_notification"),
122128
icon: <i className="i-mgc-notification-cute-re" />,
129+
settingsPath: "notifications",
123130
enabled: !!newEntryNotification,
124131
onInit: (data) => {
125132
data.result.newEntryNotification = true
@@ -366,6 +373,18 @@ export const TargetActionList = ({ index }: { index: number }) => {
366373
<div className="flex items-center gap-2">
367374
{action.icon}
368375
<span className="shrink grow truncate">{action.title}</span>
376+
{action.settingsPath && (
377+
<Button
378+
buttonClassName="ml-4"
379+
variant="outline"
380+
size="sm"
381+
onClick={() => {
382+
settingModalPresent(action.settingsPath)
383+
}}
384+
>
385+
{t("actions.action_card.settings")}
386+
</Button>
387+
)}
369388
</div>
370389
{action.configInline && action.config && action.config()}
371390

apps/desktop/layer/renderer/src/modules/settings/tabs/notifications.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@ import {
1616
TooltipPortal,
1717
TooltipTrigger,
1818
} from "@follow/components/ui/tooltip/index.jsx"
19+
import { useEffect } from "react"
1920
import { Trans } from "react-i18next"
2021
import { Link } from "react-router"
2122
import { toast } from "sonner"
2223

23-
import { useAppMessagingToken } from "~/atoms/app"
24+
import { setAppMessagingToken, useAppMessagingToken } from "~/atoms/app"
2425
import { useCurrentModal } from "~/components/ui/modal/stacked/hooks"
2526
import { useI18n } from "~/hooks/common"
27+
import { tipcClient } from "~/lib/client"
2628
import { useMessaging, useTestMessaging } from "~/queries/messaging"
2729

2830
export const SettingNotifications = () => {
@@ -34,6 +36,12 @@ export const SettingNotifications = () => {
3436

3537
const testMessaging = useTestMessaging()
3638

39+
useEffect(() => {
40+
tipcClient?.getMessagingToken().then((credentials) => {
41+
setAppMessagingToken(credentials?.fcm?.token || null)
42+
})
43+
}, [])
44+
3745
return (
3846
<section className="mt-4">
3947
<div className="mb-4 space-y-2 text-sm">

locales/settings/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
"actions.action_card.operator": "Operator",
4141
"actions.action_card.or": "Or",
4242
"actions.action_card.rewrite_rules": "Rewrite rules",
43+
"actions.action_card.settings": "Settings",
4344
"actions.action_card.silence": "Silence",
4445
"actions.action_card.source_content": "View source content",
4546
"actions.action_card.star": "Star",

0 commit comments

Comments
 (0)