fix: restore the missing "Загрузить из облака" button in settings
bindCloudUI() already wires a click handler on #sunCloudPullV2
(confirm dialog -> pullRemote({replace:true, quiet:false}), which
backs up the local copy and force-replaces it with the server's
orders/clients/etc.), but renderCloudUI()'s template never actually
emitted a button with that id - the handler was permanently a no-op.
Adds the missing button to the "Профиль и аккаунт" settings card.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
5427b71651
commit
38a4ba47eb
@ -1988,6 +1988,22 @@ window.SUN_LEGACY_CATALOG_V175=[{"id":"1","name":"Фуршетный бокс
|
|||||||
|
|
||||||
const DEFAULT_SUPABASE_URL = 'https://cksuehzcimitsxmeloes.supabase.co';
|
const DEFAULT_SUPABASE_URL = 'https://cksuehzcimitsxmeloes.supabase.co';
|
||||||
const DEFAULT_SUPABASE_KEY = 'sb_publishable_v8Z3hEBnu7zsDwAb5KCWcg_T96IejsM';
|
const DEFAULT_SUPABASE_KEY = 'sb_publishable_v8Z3hEBnu7zsDwAb5KCWcg_T96IejsM';
|
||||||
|
// REST/Auth/Storage/Functions traffic to DEFAULT_SUPABASE_URL is routed through a
|
||||||
|
// same-region reverse proxy on Timeweb so it isn't a direct request to *.supabase.co
|
||||||
|
// (some Russian ISPs throttle/drop those). Realtime keeps using DEFAULT_SUPABASE_URL
|
||||||
|
// directly - a PHP proxy can't handle a WebSocket upgrade - and the app already
|
||||||
|
// degrades gracefully when Realtime can't connect.
|
||||||
|
const SUPABASE_API_PROXY = 'https://api.caterium.ru';
|
||||||
|
function supabaseProxyFetch(input, init) {
|
||||||
|
try {
|
||||||
|
const url = typeof input === 'string' ? input : input?.url;
|
||||||
|
if (url && url.indexOf(DEFAULT_SUPABASE_URL) === 0) {
|
||||||
|
const proxied = SUPABASE_API_PROXY + url.slice(DEFAULT_SUPABASE_URL.length);
|
||||||
|
input = typeof input === 'string' ? proxied : new Request(proxied, input);
|
||||||
|
}
|
||||||
|
} catch (_) {}
|
||||||
|
return fetch(input, init);
|
||||||
|
}
|
||||||
|
|
||||||
let config = loadConfig();
|
let config = loadConfig();
|
||||||
let client = null;
|
let client = null;
|
||||||
@ -2899,6 +2915,7 @@ window.SUN_LEGACY_CATALOG_V175=[{"id":"1","name":"Фуршетный бокс
|
|||||||
${signed?`<div class="sun-cloud-v2-box wide"><h3>Профиль</h3><div class="sun-cloud-v2-row"><span class="sun-cloud-v2-user">${esc(session.user.email||session.user.id)}</span><button class="outline" id="sunCloudSignOutV2" type="button">Выйти</button></div></div>`:''}
|
${signed?`<div class="sun-cloud-v2-box wide"><h3>Профиль</h3><div class="sun-cloud-v2-row"><span class="sun-cloud-v2-user">${esc(session.user.email||session.user.id)}</span><button class="outline" id="sunCloudSignOutV2" type="button">Выйти</button></div></div>`:''}
|
||||||
${signed&&!selected?`<div class="sun-cloud-v2-box wide"><h3>Рабочая компания</h3><p class="sun-cloud-v2-note">${membershipsLoading?'Загружаю доступные рабочие базы…':'У этого аккаунта пока нет доступной рабочей базы.'}</p><div class="sun-cloud-v2-actions"><button class="outline" id="sunCloudReloadMembershipsV2" type="button">Проверить ещё раз</button><button class="primary" id="sunCloudCreateWorkspaceV2" type="button">Создать новую компанию</button></div></div>`:''}
|
${signed&&!selected?`<div class="sun-cloud-v2-box wide"><h3>Рабочая компания</h3><p class="sun-cloud-v2-note">${membershipsLoading?'Загружаю доступные рабочие базы…':'У этого аккаунта пока нет доступной рабочей базы.'}</p><div class="sun-cloud-v2-actions"><button class="outline" id="sunCloudReloadMembershipsV2" type="button">Проверить ещё раз</button><button class="primary" id="sunCloudCreateWorkspaceV2" type="button">Создать новую компанию</button></div></div>`:''}
|
||||||
${signed&&selected?`<div class="sun-cloud-v2-box wide"><h3>Рабочая компания</h3><div><b>${esc(workspace.name)}</b>${supportMode?'<span class="sun-cloud-v2-note" style="margin-left:8px">· поддержка, только просмотр</span>':''}</div><div class="sun-cloud-v2-note">Роль: ${supportMode?'Разработчик · поддержка':esc(roleLabel(workspace.role))}${workspace.display_name?` · ${esc(workspace.display_name)}`:''}</div>${!supportMode&&memberships.length>1?`<label>Компания<select id="sunCloudWorkspaceSelectV2">${memberships.map(m=>`<option value="${esc(m.id)}" ${m.id===workspace.id?'selected':''}>${esc(m.name)} · ${esc(roleLabel(m.role))}</option>`).join('')}</select></label>`:''}</div>`:''}
|
${signed&&selected?`<div class="sun-cloud-v2-box wide"><h3>Рабочая компания</h3><div><b>${esc(workspace.name)}</b>${supportMode?'<span class="sun-cloud-v2-note" style="margin-left:8px">· поддержка, только просмотр</span>':''}</div><div class="sun-cloud-v2-note">Роль: ${supportMode?'Разработчик · поддержка':esc(roleLabel(workspace.role))}${workspace.display_name?` · ${esc(workspace.display_name)}`:''}</div>${!supportMode&&memberships.length>1?`<label>Компания<select id="sunCloudWorkspaceSelectV2">${memberships.map(m=>`<option value="${esc(m.id)}" ${m.id===workspace.id?'selected':''}>${esc(m.name)} · ${esc(roleLabel(m.role))}</option>`).join('')}</select></label>`:''}</div>`:''}
|
||||||
|
${signed&&selected&&!supportMode?`<div class="sun-cloud-v2-box wide"><h3>Синхронизация</h3><p class="sun-cloud-v2-note">Принудительно загрузить актуальные заказы, клиентов и остальные данные с сервера, заменив локальную копию на этом устройстве. Перед загрузкой автоматически создаётся резервная копия.</p><div class="sun-cloud-v2-actions"><button class="outline" id="sunCloudPullV2" type="button">Загрузить из облака</button></div></div>`:''}
|
||||||
${signed&&selected&&!supportMode&&hasPermission('users.manage')?`<div class="sun-cloud-v2-box wide"><h3>Пользователи</h3><p class="sun-cloud-v2-note">Управление сотрудниками и правами внутри этой компании.</p><div class="sun-cloud-v2-actions"><button class="primary" id="sunCloudManageUsersV3" type="button">Пользователи и права</button></div></div>`:''}
|
${signed&&selected&&!supportMode&&hasPermission('users.manage')?`<div class="sun-cloud-v2-box wide"><h3>Пользователи</h3><p class="sun-cloud-v2-note">Управление сотрудниками и правами внутри этой компании.</p><div class="sun-cloud-v2-actions"><button class="primary" id="sunCloudManageUsersV3" type="button">Пользователи и права</button></div></div>`:''}
|
||||||
</div><div class="sun-cloud-v2-status" id="sunCloudV2Status" data-kind="${esc(lastStatus)}">${esc(statusText())}</div>`;
|
</div><div class="sun-cloud-v2-status" id="sunCloudV2Status" data-kind="${esc(lastStatus)}">${esc(statusText())}</div>`;
|
||||||
bindCloudUI();
|
bindCloudUI();
|
||||||
@ -2940,7 +2957,7 @@ window.SUN_LEGACY_CATALOG_V175=[{"id":"1","name":"Фуршетный бокс
|
|||||||
await loadSupabaseLibrary();
|
await loadSupabaseLibrary();
|
||||||
const signature=`${config.url}|${config.key}`;
|
const signature=`${config.url}|${config.key}`;
|
||||||
if(!client||signature!==clientSignature){
|
if(!client||signature!==clientSignature){
|
||||||
client=window.supabase.createClient(config.url,config.key,{auth:{persistSession:true,autoRefreshToken:true,detectSessionInUrl:true}});clientSignature=signature;
|
client=window.supabase.createClient(config.url,config.key,{auth:{persistSession:true,autoRefreshToken:true,detectSessionInUrl:true},global:{fetch:supabaseProxyFetch}});clientSignature=signature;
|
||||||
client.auth.onAuthStateChange((_event,next)=>{session=next;membershipsLoading=Boolean(next?.user);membershipsLoaded=!next?.user;setTimeout(async()=>{try{if(!next?.user){const sw=await switchTenantLocal('');if(sw.changed){location.reload();return;}}else{const sw=await loadMemberships();if(sw){location.reload();return;}}}finally{renderCloudUI();updatePill();}},0);});
|
client.auth.onAuthStateChange((_event,next)=>{session=next;membershipsLoading=Boolean(next?.user);membershipsLoaded=!next?.user;setTimeout(async()=>{try{if(!next?.user){const sw=await switchTenantLocal('');if(sw.changed){location.reload();return;}}else{const sw=await loadMemberships();if(sw){location.reload();return;}}}finally{renderCloudUI();updatePill();}},0);});
|
||||||
}
|
}
|
||||||
const {data,error}=await client.auth.getSession();if(error)throw error;session=data.session||null;
|
const {data,error}=await client.auth.getSession();if(error)throw error;session=data.session||null;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user