fix(h5-partner): resolve merge conflicts for auth and sub-accounts

Merge partner session model (AuthGate, ensureSession, WeChat OAuth in Context) with sub-account routing, admin partner-account tree CRUD, upload lock, and partner staff flows.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-10 11:24:48 +08:00
20 changed files with 378 additions and 264 deletions
@@ -9,6 +9,7 @@ import {
} from 'react';
import { stripOAuthParamsFromLocation, toAppPath } from '@dukang/weixin-sdk';
import { isWxAuthorizeEnabled } from '@dukang/shared-types';
import type { PartnerMe, PartnerStaffRole } from '@dukang/shared-types';
import {
clearAuth,
ensureSession,
@@ -17,7 +18,6 @@ import {
type PartnerSessionPayload,
type PartnerSessionProfile,
} from '../lib/api';
import type { PartnerMe, PartnerStaffRole } from '@dukang/shared-types';
import { fetchClientConfig, processPartnerWechatOAuthCallback } from '../lib/wechat-auth';
import { isWechatEnv } from '../lib/weixin';
@@ -40,6 +40,17 @@ type PartnerSessionValue = {
const PartnerSessionContext = createContext<PartnerSessionValue | null>(null);
function accountFromProfile(profile: PartnerSessionProfile): PartnerAccount {
return {
id: profile.id,
name: profile.name,
phone: profile.phone,
companyName: profile.companyName ?? '',
isPrimary: profile.isPrimary ?? true,
staffRole: profile.staffRole,
};
}
export function PartnerSessionProvider({ children }: { children: ReactNode }) {
const [ready, setReady] = useState(false);
const [authenticated, setAuthenticated] = useState(false);
@@ -49,13 +60,7 @@ export function PartnerSessionProvider({ children }: { children: ReactNode }) {
saveAuth(session);
setAuthenticated(true);
if (session.partner) {
setAccount({
id: session.partner.id,
name: session.partner.name,
phone: session.partner.phone,
companyName: session.partner.companyName,
isPrimary: session.partner.isPrimary,
});
setAccount(accountFromProfile(session.partner));
}
}, []);