SHA256
Обновление архитектуры ключей и кошельков
This commit is contained in:
@@ -21,7 +21,6 @@ import {
|
||||
|
||||
const HISTORY_KEY = 'shine-ui-arweave-attachment-history-v1';
|
||||
const LAST_WALLET_KEY_PREFIX = 'shine-ui-arweave-last-wallet-v1:';
|
||||
const LAST_TURBO_KEY_SOURCE_PREFIX = 'shine-ui-turbo-last-key-source-v1:';
|
||||
const MAX_HISTORY_ITEMS = 100;
|
||||
const RECENT_UPLOAD_MS = 20 * 60 * 1000;
|
||||
|
||||
@@ -171,10 +170,6 @@ function lastWalletStorageKey(login) {
|
||||
return `${LAST_WALLET_KEY_PREFIX}${String(login || '').trim().toLowerCase() || 'anonymous'}`;
|
||||
}
|
||||
|
||||
function lastTurboKeySourceStorageKey(login) {
|
||||
return `${LAST_TURBO_KEY_SOURCE_PREFIX}${String(login || '').trim().toLowerCase() || 'anonymous'}`;
|
||||
}
|
||||
|
||||
function readLastWalletId(login) {
|
||||
try {
|
||||
return sessionStorage.getItem(lastWalletStorageKey(login)) || '';
|
||||
@@ -192,23 +187,6 @@ function writeLastWalletId(login, walletId) {
|
||||
}
|
||||
}
|
||||
|
||||
function readLastTurboKeySource(login, fallback = 'client') {
|
||||
try {
|
||||
return sessionStorage.getItem(lastTurboKeySourceStorageKey(login)) || String(fallback || 'client');
|
||||
} catch {
|
||||
return String(fallback || 'client');
|
||||
}
|
||||
}
|
||||
|
||||
function writeLastTurboKeySource(login, keySource) {
|
||||
try {
|
||||
const clean = String(keySource || '').trim() || 'client';
|
||||
sessionStorage.setItem(lastTurboKeySourceStorageKey(login), clean);
|
||||
} catch {
|
||||
// ignore sessionStorage errors
|
||||
}
|
||||
}
|
||||
|
||||
async function resizeImageFileToAvatar(file) {
|
||||
const source = file instanceof File ? file : null;
|
||||
if (!source) throw new Error('Выберите изображение.');
|
||||
@@ -315,8 +293,8 @@ export function openArweaveAttachmentManager({
|
||||
let closed = false;
|
||||
let wallets = [];
|
||||
let turboKeyChoices = [];
|
||||
let selectedWalletId = readLastWalletId(cleanLogin) || 'derived-client-key';
|
||||
let selectedTurboKeySource = readLastTurboKeySource(cleanLogin, turboKeySource);
|
||||
let selectedWalletId = readLastWalletId(cleanLogin) || 'derived-blockchain-key';
|
||||
const selectedTurboKeySource = 'blockchain';
|
||||
let selectedUploadTransport = String(uploadTransport || '').trim().toLowerCase() === 'arweave' ? 'arweave' : 'turbo';
|
||||
let selectedFile = null;
|
||||
let selectedSha256 = '';
|
||||
@@ -394,7 +372,7 @@ export function openArweaveAttachmentManager({
|
||||
try {
|
||||
wallets = await getArweaveWalletChoices({ login: cleanLogin, storagePwd: cleanStoragePwd });
|
||||
if (!wallets.some((item) => String(item.id) === String(selectedWalletId))) {
|
||||
selectedWalletId = String(wallets[0]?.id || 'derived-client-key');
|
||||
selectedWalletId = String(wallets[0]?.id || 'derived-blockchain-key');
|
||||
}
|
||||
writeLastWalletId(cleanLogin, selectedWalletId);
|
||||
} catch (error) {
|
||||
@@ -408,12 +386,11 @@ export function openArweaveAttachmentManager({
|
||||
login: cleanLogin,
|
||||
storagePwd: cleanStoragePwd,
|
||||
});
|
||||
if (!turboKeyChoices.some((item) => String(item.keySource) === String(selectedTurboKeySource))) {
|
||||
selectedTurboKeySource = String(turboKeyChoices[0]?.keySource || 'blockchain');
|
||||
if (!turboKeyChoices.some((item) => String(item.keySource) === 'blockchain')) {
|
||||
throw new Error('На устройстве нет ключа блокчейна.');
|
||||
}
|
||||
writeLastTurboKeySource(cleanLogin, selectedTurboKeySource);
|
||||
} catch (error) {
|
||||
setText(errorEl, error?.message || 'Не удалось загрузить Solana-ключи для Turbo.');
|
||||
setText(errorEl, error?.message || 'Не удалось загрузить ключ блокчейна для Turbo.');
|
||||
}
|
||||
};
|
||||
|
||||
@@ -633,8 +610,7 @@ export function openArweaveAttachmentManager({
|
||||
? `
|
||||
<p class="ar-attachment-note">Маленькие файлы и аватары через Turbo пока загружаются бесплатно. Для больших файлов пополните Turbo со своего SOL-кошелька.</p>
|
||||
<div class="form-field">
|
||||
<label for="turbo-key-source">Подписывать и пополнять через</label>
|
||||
<select class="select ar-attachment-wallet-select" id="turbo-key-source"></select>
|
||||
<span class="meta-muted">Подпись и пополнение: ключ блокчейна пользователя.</span>
|
||||
</div>
|
||||
`
|
||||
: `
|
||||
@@ -671,7 +647,6 @@ export function openArweaveAttachmentManager({
|
||||
`;
|
||||
bindBackdrop();
|
||||
const walletEl = root.querySelector('#ar-attach-wallet');
|
||||
const turboKeyEl = root.querySelector('#turbo-key-source');
|
||||
const fileEl = root.querySelector('#ar-attach-file');
|
||||
const mainMetaEl = root.querySelector('[data-meta-main="true"]');
|
||||
const previewMetaEl = root.querySelector('[data-meta-preview="true"]');
|
||||
@@ -705,17 +680,6 @@ export function openArweaveAttachmentManager({
|
||||
|
||||
if (turboMode) {
|
||||
await loadTurboKeyChoices(errorEl);
|
||||
if (turboKeyEl) {
|
||||
turboKeyEl.innerHTML = turboKeyChoices.map((item) => (
|
||||
`<option value="${escapeHtml(item.keySource)}">${escapeHtml(item.label)} · ${escapeHtml(shortAddress(item.address))}</option>`
|
||||
)).join('');
|
||||
turboKeyEl.value = selectedTurboKeySource;
|
||||
turboKeyEl.addEventListener('change', async () => {
|
||||
selectedTurboKeySource = String(turboKeyEl.value || 'client');
|
||||
writeLastTurboKeySource(cleanLogin, selectedTurboKeySource);
|
||||
await refreshTurboStateForCurrentFile(mainMetaEl, previewMetaEl, errorEl, uploadBtn);
|
||||
});
|
||||
}
|
||||
await refreshTurboStateForCurrentFile(mainMetaEl, previewMetaEl, errorEl, uploadBtn);
|
||||
} else {
|
||||
await loadWallets(errorEl);
|
||||
|
||||
Reference in New Issue
Block a user