SHA256
Доработать клиентский UI Solana-регистрации
This commit is contained in:
@@ -6,6 +6,7 @@ import {
|
||||
|
||||
const CLASSIFY_LOGIN_INSTRUCTION_TAG = 1;
|
||||
const PRECHECK_SIM_PAYER = 'FUc28vNixp7F3nnkpGVt6nuJbgvJ4429v4B5wS52Df6P';
|
||||
const SHINE_USERS_USER_PDA_SEED_PREFIX = 'user_login=';
|
||||
|
||||
let solanaLibPromise = null;
|
||||
function loadSolanaLib() {
|
||||
@@ -71,6 +72,15 @@ export function formatSolanaErrorDetails(error) {
|
||||
return parts.join(' :: ');
|
||||
}
|
||||
|
||||
export function isUserAlreadyExistsSolanaError(error) {
|
||||
const details = formatSolanaErrorDetails(error);
|
||||
return details.includes('UserAlreadyExists')
|
||||
|| details.includes('custom program error: 0x4')
|
||||
|| details.includes('"Custom":4')
|
||||
|| details.includes('"InstructionError":[2,{"Custom":4}]')
|
||||
|| details.includes('Instruction 2: custom program error: 0x4');
|
||||
}
|
||||
|
||||
export async function precheckLoginClassOnSolana({ login, solanaEndpoint }) {
|
||||
const solana = await loadSolanaLib();
|
||||
const connection = new solana.Connection(String(solanaEndpoint || ''), 'confirmed');
|
||||
@@ -121,7 +131,7 @@ export async function checkLoginExistsOnSolana({ login, solanaEndpoint }) {
|
||||
throw new Error('EMPTY_LOGIN');
|
||||
}
|
||||
const [userPda] = solana.PublicKey.findProgramAddressSync(
|
||||
[enc.encode('login='), enc.encode(loginNorm)],
|
||||
[enc.encode(SHINE_USERS_USER_PDA_SEED_PREFIX), enc.encode(loginNorm)],
|
||||
usersProgram,
|
||||
);
|
||||
const ai = await connection.getAccountInfo(userPda, 'confirmed');
|
||||
|
||||
Reference in New Issue
Block a user