Вынести дефолтный сервер в конфиг UI и оживить счетчик пароля

This commit is contained in:
AidarKC
2026-06-23 14:11:09 +04:00
parent 95daa230bb
commit 66986b804c
13 changed files with 50 additions and 18 deletions
+3 -2
View File
@@ -17,6 +17,7 @@ import {
uploadArweaveFile,
validateAvatarSourceFile,
} from '../services/arweave-file-service.js';
import { defaultServerAddress, defaultServerHttp } from '../deploy-config.js';
export const pageMeta = { id: 'developer-settings-view', title: 'Настройки разработчика' };
@@ -207,9 +208,9 @@ function showClientUpdateHelp() {
window.alert(
'Если UI не обновился:\n\n'
+ '1) Закройте вкладки с SHiNE.\n'
+ '2) Откройте chrome://settings/siteData и удалите данные для shineup.me.\n'
+ `2) Откройте chrome://settings/siteData и удалите данные для ${defaultServerAddress}.\n`
+ '3) Если приложение установлено как PWA — удалите его с устройства.\n'
+ '4) Откройте https://shineup.me заново и выполните вход.\n'
+ `4) Откройте ${defaultServerHttp} заново и выполните вход.\n`
+ '5) Если всё ещё старая версия — откройте в режиме инкогнито и проверьте версию в Настройки -> Версии.'
);
}
+6 -1
View File
@@ -100,6 +100,7 @@ export function render({ navigate }) {
onInput: (index, value) => {
passwordWords[index] = value;
syncDraftState();
updateWordsPreview();
},
});
@@ -165,7 +166,10 @@ export function render({ navigate }) {
syncDraftState();
loginInput.addEventListener('input', syncDraftState);
passwordInput.addEventListener('input', syncDraftState);
passwordInput.addEventListener('input', () => {
syncDraftState();
updateWordsPreview();
});
passwordModeCheckbox.addEventListener('change', () => {
const nextMode = passwordModeCheckbox.checked ? 'words' : 'single';
@@ -181,6 +185,7 @@ export function render({ navigate }) {
}
passwordMode = nextMode;
updatePasswordModeVisibility();
updateWordsPreview();
syncDraftState();
});
+6 -2
View File
@@ -14,6 +14,7 @@ import {
PASSWORD_WORDS_COUNT,
} from '../services/password-words.js';
import { openRegistrationFaq } from './registration-faq-view.js';
import { defaultServerHttp, defaultServerLogin } from '../deploy-config.js';
export const pageMeta = { id: 'register-view', title: 'Зарегистрироваться', showAppChrome: false };
@@ -100,6 +101,7 @@ export function render({ navigate }) {
onInput: (index, value) => {
passwordWords[index] = value;
syncDraftState();
updateWordsPreview();
},
});
@@ -123,8 +125,8 @@ export function render({ navigate }) {
serverNotice.className = 'card stack';
serverNotice.innerHTML = `
<p class="field-label">Первый сервер SHiNE</p>
<p class="meta-muted">Сейчас вашим первым и основным сервером будет серверный аккаунт <strong>${state.entrySettings.shineServerLogin || 'shineupme'}</strong>.</p>
<p class="meta-muted">Текущий адрес этого сервера: <strong>${state.entrySettings.shineServerHttp || 'https://shineup.me'}</strong>.</p>
<p class="meta-muted">Сейчас вашим первым и основным сервером будет серверный аккаунт <strong>${state.entrySettings.shineServerLogin || defaultServerLogin}</strong>.</p>
<p class="meta-muted">Текущий адрес этого сервера: <strong>${state.entrySettings.shineServerHttp || defaultServerHttp}</strong>.</p>
<p class="meta-muted">Это первый сервер, на который вам будут писать и звонить после регистрации. Позже его можно будет сменить, а в будущем использовать и несколько серверов сразу.</p>
`;
@@ -299,6 +301,7 @@ export function render({ navigate }) {
passwordInput.addEventListener('input', () => {
syncDraftState();
updateWordsPreview();
});
passwordModeCheckbox.addEventListener('change', () => {
@@ -315,6 +318,7 @@ export function render({ navigate }) {
}
passwordMode = nextMode;
updatePasswordModeVisibility();
updateWordsPreview();
syncDraftState();
});
@@ -16,6 +16,7 @@ import {
isUserAlreadyExistsSolanaError,
registerUserOnSolana,
} from '../services/solana-register-service.js';
import { defaultServerLogin } from '../deploy-config.js';
export const pageMeta = { id: 'registration-payment-view', title: 'Оплата регистрации', showAppChrome: false };
const MIN_REQUIRED_SOL = 0.01;
@@ -194,7 +195,7 @@ export function render({ navigate }) {
login: state.registrationDraft.login,
keyBundle,
solanaEndpoint: state.entrySettings.solanaServer,
accessServers: [state.entrySettings.shineServerLogin || 'shineupme'],
accessServers: [state.entrySettings.shineServerLogin || defaultServerLogin],
});
} catch (solanaError) {
const solanaMsg = formatSolanaErrorDetails(solanaError);