站点只给本人用,云乐坊 SSO 授权、收藏/历史云同步、获客归因和账号切换记账都没有收益,却被登录状态检查和同步失败提示持续打扰。 - 删除 useYunlefunAuth / yunlefunAuth / yunlefunSsoConfig / yunlefunAuth 适配器、useUserDataSync / userDataSync / userData 适配器、三个 client 插件与 /auth/callback 回调页 - 抽出 adapters/cloudbase.ts,让「反馈一下」和匿名筛选信号不再依赖登录态;cook-feedback 云函数保留 - 删除 cook-user-data 云函数与 cook_user_data 权限规则,移除 @yunlefun/sso 依赖 - 「我的」页删掉登录按钮、账号卡、四个统计格和退出登录;「关于」页删掉项目作者、致谢名单和上游宣传链接 - 本地收藏/历史与导出导入保留,删除同步专用的 lastUid 记账 取舍见 docs/decisions/0005-drop-login-and-sync.md
37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
import type { CloudbaseFunctionCaller } from '~/adapters/cloudbase'
|
|
import type { RecipeReport, SearchSignal } from '~/adapters/feedback'
|
|
import { callCloudbaseFunction } from '~/adapters/cloudbase'
|
|
import { createFeedbackRemote } from '~/adapters/feedback'
|
|
import { getDeviceId, signalKey } from '~/utils/feedback'
|
|
|
|
const sentSignals = new Set<string>()
|
|
|
|
/**
|
|
* Recipe reports and anonymous search signals, sent to the `cook-feedback`
|
|
* cloud function. Signals are best effort and never surface errors.
|
|
*/
|
|
export function useRecipeFeedback() {
|
|
const config = useRuntimeConfig()
|
|
const env = config.public.yunlefunCloudbaseEnv
|
|
const callFunction: CloudbaseFunctionCaller = (name, data) =>
|
|
callCloudbaseFunction(env, name, data)
|
|
const remote = () => createFeedbackRemote(callFunction, getDeviceId())
|
|
|
|
async function report(input: RecipeReport): Promise<void> {
|
|
await remote().report(input)
|
|
}
|
|
|
|
function signal(input: SearchSignal): void {
|
|
if (!import.meta.client || !input.stuff.length)
|
|
return
|
|
const key = signalKey(input)
|
|
if (sentSignals.has(key))
|
|
return
|
|
sentSignals.add(key)
|
|
// Fire once per session even if it fails, so an unconfigured backend is not retried on every change.
|
|
remote().signal(input).catch(() => {})
|
|
}
|
|
|
|
return { report, signal }
|
|
}
|