chore: wire release hook and service updates

This commit is contained in:
2026-06-18 16:18:52 +08:00
parent e70ee3e22f
commit 1fc1635341
6 changed files with 33 additions and 15 deletions
+23
View File
@@ -0,0 +1,23 @@
#!/bin/sh
# Post-commit hook: 本地提交后自动执行 Web 预发布脚本。
set -eu
SCRIPT_PATH="scripts/release/pre_release_web.sh"
if [ "${COZSWEET_SKIP_POST_COMMIT_PRE_RELEASE:-}" = "1" ]; then
echo "=== post-commit: skip pre-release hook (nested git operation) ==="
exit 0
fi
REPO_TOPLEVEL="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
cd "$REPO_TOPLEVEL"
if [ ! -f "$SCRIPT_PATH" ]; then
echo "=== post-commit: script not found: $SCRIPT_PATH ===" >&2
exit 1
fi
echo "=== post-commit: running $SCRIPT_PATH ==="
export COZSWEET_SKIP_POST_COMMIT_PRE_RELEASE=1
bash "$SCRIPT_PATH"
+5 -2
View File
@@ -1,8 +1,10 @@
"use client"; "use client";
import { signOut } from "next-auth/react"; import { signOut } from "next-auth/react";
import { useRouter } from "next/navigation";
import { MobileShell, SettingsSection } from "@/app/_components/core"; import { MobileShell, SettingsSection } from "@/app/_components/core";
import { ROUTES } from "@/router/routes";
import { useAuthDispatch, useAuthState } from "@/stores/auth/auth-context"; import { useAuthDispatch, useAuthState } from "@/stores/auth/auth-context";
import { useUserDispatch, useUserState } from "@/stores/user/user-context"; import { useUserDispatch, useUserState } from "@/stores/user/user-context";
@@ -29,6 +31,7 @@ const FALLBACK_USERNAME = "User name";
* 原始 Dart: lib/ui/sidebar/sidebar_screen.dart + profile_view.dart * 原始 Dart: lib/ui/sidebar/sidebar_screen.dart + profile_view.dart
*/ */
export function SidebarScreen() { export function SidebarScreen() {
const router = useRouter();
const user = useUserState(); const user = useUserState();
const userDispatch = useUserDispatch(); const userDispatch = useUserDispatch();
const auth = useAuthState(); const auth = useAuthState();
@@ -59,7 +62,7 @@ export function SidebarScreen() {
<div className={styles.shell}> <div className={styles.shell}>
<BackBar /> <BackBar />
{/* 用户信息区:三种状态 {/* 用户信息区:三种状态 */}
<section className={styles.userSlot}> <section className={styles.userSlot}>
<UserHeader <UserHeader
state={sidebarState} state={sidebarState}
@@ -83,7 +86,7 @@ export function SidebarScreen() {
totalMinutes={0} totalMinutes={0}
onBuyPackage={() => router.push(ROUTES.subscription)} onBuyPackage={() => router.push(ROUTES.subscription)}
/> />
</section> */} </section>
{sidebarState !== "guest" ? ( {sidebarState !== "guest" ? (
<section className={styles.settingsSlot}> <section className={styles.settingsSlot}>
@@ -6,22 +6,13 @@
* / email / picture pictureUrl `UserStorage.setAvatarUrl()` * / email / picture pictureUrl `UserStorage.setAvatarUrl()`
* id `AuthStorage.setFacebookId()` * id `AuthStorage.setFacebookId()`
* *
* avatarUrl
* - /
* - Facebook
* - Facebook ID userId deep link
*
* Facebook SDKwindow.FB bundle Graph API
* HTTP SDK init
*
* `https://graph.facebook.com/me?fields=id,name,email,picture.type(large)&access_token=...` * `https://graph.facebook.com/me?fields=id,name,email,picture.type(large)&access_token=...`
* - `picture.type(large)` ~200px URL square 50px * - `picture.type(large)` ~200px URL square 50px
* - version * - version
* - appId / appSecretaccessToken * - appId / appSecretaccessToken
*/ */
import { FacebookUserData } from "@/data/dto/auth/facebook_user_data"; import { FacebookUserData } from "@/data/dto/auth";
import { Logger } from "./logger"; import { Logger, Result, toError } from "@/utils";
import { Result, toError } from "./result";
const log = new Logger("FacebookGraph"); const log = new Logger("FacebookGraph");
+1
View File
@@ -10,6 +10,7 @@ export * from "./api/http_client";
export * from "./api/metrics_api"; export * from "./api/metrics_api";
export * from "./api/response_helper"; export * from "./api/response_helper";
export * from "./api/user_api"; export * from "./api/user_api";
export * from "./facebook-graph";
export * from "../../core/net/config/api_config"; export * from "../../core/net/config/api_config";
export * from "../../core/net/interceptor/auth_refresh_interceptor"; export * from "../../core/net/interceptor/auth_refresh_interceptor";
export * from "../../core/net/interceptor/logging_interceptor"; export * from "../../core/net/interceptor/logging_interceptor";
+2 -1
View File
@@ -7,9 +7,10 @@ import { AuthPlatform, type AuthProvider } from "@/lib/auth/auth_platform";
import type { LoginStatus } from "@/data/dto/auth"; import type { LoginStatus } from "@/data/dto/auth";
import { authRepository } from "@/data/repositories/auth_repository"; import { authRepository } from "@/data/repositories/auth_repository";
import type { IAuthRepository } from "@/data/repositories/interfaces"; import type { IAuthRepository } from "@/data/repositories/interfaces";
import { fetchFacebookUserData } from "@/data/services";
import { AuthStorage } from "@/data/storage/auth/auth_storage"; import { AuthStorage } from "@/data/storage/auth/auth_storage";
import { UserStorage } from "@/data/storage/user/user_storage"; import { UserStorage } from "@/data/storage/user/user_storage";
import { deviceIdentifier, fetchFacebookUserData, Logger, Result } from "@/utils"; import { deviceIdentifier, Logger, Result } from "@/utils";
import { readGuestId } from "./auth-helpers"; import { readGuestId } from "./auth-helpers";
-1
View File
@@ -6,7 +6,6 @@ export * from "./app-env";
export * from "./browser-detect"; export * from "./browser-detect";
export * from "./date"; export * from "./date";
export * from "./device_identifier"; export * from "./device_identifier";
export * from "./facebook-graph";
export * from "./logger"; export * from "./logger";
export * from "./platform-detect"; export * from "./platform-detect";
export * from "./pwa"; export * from "./pwa";