Skip to content

Commit 1401cb1

Browse files
committed
fix(template): handle missing platformEnvs and avoid guest mode for sealos_inside
1 parent c68ada2 commit 1401cb1

File tree

4 files changed

+38
-12
lines changed

4 files changed

+38
-12
lines changed

frontend/desktop/src/pages/index.tsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,12 +122,18 @@ export default function Home({ sealos_cloud_domain }: { sealos_cloud_domain: str
122122
setInviterId(query.uid);
123123
}
124124
// sealos_inside=true internal call
125-
if (whitelistApps.includes(appkey) && appQuery.indexOf('sealos_inside=true') === -1) {
126-
sessionStorage.setItem(
127-
'accessTemplatesNoLogin',
128-
`https://template.${sealos_cloud_domain}/deploy?${appQuery}`
129-
);
130-
return;
125+
if (whitelistApps.includes(appkey)) {
126+
if (appQuery.indexOf('sealos_inside=true') === -1) {
127+
sessionStorage.setItem(
128+
'accessTemplatesNoLogin',
129+
`https://template.${sealos_cloud_domain}/deploy?${appQuery}`
130+
);
131+
return;
132+
} else {
133+
// If sealos_inside=true, redirect to login page to avoid guest mode
134+
router.replace('/signin');
135+
return;
136+
}
131137
}
132138

133139
// save autolaunch info (for guest and logged in user)

frontend/providers/template/src/pages/deploy/index.tsx

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,21 @@ export default function EditApp({
151151

152152
const { createCompleted } = useGuideStore();
153153

154-
const handleOutside = useCallback(() => {
154+
const handleOutside = useCallback(async () => {
155155
setCached(JSON.stringify({ ...formHook.getValues(), cachedKey: templateName }));
156156

157+
// Ensure platformEnvs is loaded
158+
let envs = platformEnvs;
159+
if (!envs?.DESKTOP_DOMAIN) {
160+
try {
161+
envs = await getPlatformEnv({ insideCloud });
162+
setEnvs(envs);
163+
} catch (error) {
164+
console.error('Failed to get platform envs:', error);
165+
return;
166+
}
167+
}
168+
157169
const params = new URLSearchParams();
158170
['k', 's', 'bd_vid'].forEach((param) => {
159171
const value = router.query[param];
@@ -164,7 +176,7 @@ export default function EditApp({
164176

165177
const queryString = params.toString();
166178

167-
const baseUrl = `https://${platformEnvs?.DESKTOP_DOMAIN}/`;
179+
const baseUrl = `https://${envs.DESKTOP_DOMAIN}/`;
168180
const encodedTemplateQuery = encodeURIComponent(
169181
`?templateName=${templateName}&sealos_inside=true`
170182
);
@@ -174,7 +186,7 @@ export default function EditApp({
174186
}`;
175187

176188
window.open(href, '_self');
177-
}, [router, templateName, platformEnvs, setCached, formHook]);
189+
}, [router, templateName, platformEnvs, setCached, formHook, insideCloud, setEnvs]);
178190

179191
const handleInside = useCallback(async () => {
180192
const yamls = yamlList.map((item) => item.value);
@@ -213,7 +225,7 @@ export default function EditApp({
213225

214226
try {
215227
if (!insideCloud) {
216-
handleOutside();
228+
await handleOutside();
217229
} else {
218230
await handleInside();
219231
}
@@ -240,6 +252,7 @@ export default function EditApp({
240252
}, [yamlList]);
241253

242254
const handleCreateApp = useCallback(() => {
255+
// console.log('usage', usage);
243256
// Check quota before creating app
244257
const exceededQuotaItems = checkExceededQuotas({
245258
cpu: usage.cpu.max,

frontend/providers/template/src/store/cached.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ export const useCachedStore = create<State>()(
2828
},
2929
setInsideCloud(e: boolean) {
3030
set((state) => {
31-
state.insideCloud = process.env.NODE_ENV === 'development' ? true : e;
32-
// state.insideCloud = e;
31+
// state.insideCloud = process.env.NODE_ENV === 'development' ? true : e;
32+
state.insideCloud = e;
3333
});
3434
}
3535
})),

frontend/providers/template/src/store/user.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { sealosApp } from 'sealos-desktop-sdk/app';
55
import { create } from 'zustand';
66
import { devtools } from 'zustand/middleware';
77
import { immer } from 'zustand/middleware/immer';
8+
import { useCachedStore } from './cached';
89

910
type State = {
1011
userSourcePrice: userPriceType | undefined;
@@ -42,6 +43,12 @@ export const useUserStore = create<State>()(
4243
},
4344
userQuota: [],
4445
loadUserQuota: async () => {
46+
// Skip loading quota when not inside cloud
47+
const insideCloud = useCachedStore.getState().insideCloud;
48+
if (!insideCloud) {
49+
return null;
50+
}
51+
4552
const response = await sealosApp.getWorkspaceQuota();
4653

4754
set((state) => {

0 commit comments

Comments
 (0)