站点只给本人用,云乐坊 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
50 lines
1.6 KiB
TypeScript
50 lines
1.6 KiB
TypeScript
import type { UserData, UserDataExportFile } from '~/utils/userData'
|
|
import {
|
|
createEmptyUserData,
|
|
createUserDataExport,
|
|
mergeUserData,
|
|
parseUserDataExport,
|
|
} from '~/utils/userData'
|
|
import { favoriteEntries, setFavoriteEntries } from './favorite'
|
|
import { recipeHistories } from './history'
|
|
import { userDataMeta } from './userDataMeta'
|
|
|
|
export function readLocalUserData(): UserData {
|
|
const meta = userDataMeta.value
|
|
return {
|
|
favorites: favoriteEntries.value,
|
|
favoriteRemovals: meta.favoriteRemovals ?? [],
|
|
histories: recipeHistories.value,
|
|
historyRemovals: meta.historyRemovals ?? [],
|
|
historyClearedAt: meta.historyClearedAt ?? 0,
|
|
}
|
|
}
|
|
|
|
export function writeLocalUserData(data: UserData): void {
|
|
setFavoriteEntries(data.favorites)
|
|
recipeHistories.value = data.histories
|
|
userDataMeta.value = {
|
|
...userDataMeta.value,
|
|
favoriteRemovals: data.favoriteRemovals,
|
|
historyRemovals: data.historyRemovals,
|
|
historyClearedAt: data.historyClearedAt,
|
|
}
|
|
}
|
|
|
|
export function exportLocalUserData(now = Date.now()): UserDataExportFile {
|
|
return createUserDataExport(mergeUserData(readLocalUserData(), createEmptyUserData(), now), now)
|
|
}
|
|
|
|
/**
|
|
* Merge an exported file into local data.
|
|
* Returns null when the text is not a Cook export.
|
|
*/
|
|
export function importLocalUserData(text: string, now = Date.now()): { favorites: number, histories: number } | null {
|
|
const imported = parseUserDataExport(text)
|
|
if (!imported)
|
|
return null
|
|
const merged = mergeUserData(readLocalUserData(), imported, now)
|
|
writeLocalUserData(merged)
|
|
return { favorites: merged.favorites.length, histories: merged.histories.length }
|
|
}
|