feat(profile): account-deletion flow + terminal deleted screen
Profile gains a Delete-account control (durable accounts) opening a step-up dialog: a
mailed code for an email account, or the typed DELETE phrase for a platform-only one.
On success the app swaps to a terminal AccountDeleted screen ('Учётная запись удалена')
with a Close that closes the host Mini App (telegramClose / vkClose; web = no close).
Wires deleteRequest/deleteConfirm through client/transport/mock/codec; ru/en i18n;
codec wire test + Chromium/WebKit e2e.
This commit is contained in:
@@ -739,6 +739,21 @@ export function encodeLinkUnlink(kind: string): Uint8Array {
|
||||
return finish(b, fb.LinkUnlinkRequest.endLinkUnlinkRequest(b));
|
||||
}
|
||||
|
||||
export function encodeAccountDeleteConfirm(code: string, phrase: string): Uint8Array {
|
||||
const b = new Builder(64);
|
||||
const c = b.createString(code);
|
||||
const p = b.createString(phrase);
|
||||
fb.AccountDeleteConfirm.startAccountDeleteConfirm(b);
|
||||
fb.AccountDeleteConfirm.addCode(b, c);
|
||||
fb.AccountDeleteConfirm.addPhrase(b, p);
|
||||
return finish(b, fb.AccountDeleteConfirm.endAccountDeleteConfirm(b));
|
||||
}
|
||||
|
||||
export function decodeDeleteRequestResult(buf: Uint8Array): { method: 'email' | 'phrase' } {
|
||||
const r = fb.AccountDeleteRequestResult.getRootAsAccountDeleteRequestResult(new ByteBuffer(buf));
|
||||
return { method: (s(r.method()) || 'phrase') as 'email' | 'phrase' };
|
||||
}
|
||||
|
||||
export function decodeLinkResult(buf: Uint8Array): LinkResult {
|
||||
const r = fb.LinkResult.getRootAsLinkResult(new ByteBuffer(buf));
|
||||
const sess = r.session();
|
||||
|
||||
Reference in New Issue
Block a user