mirror of
https://github.com/block/buzz.git
synced 2026-11-06 09:21:45 +00:00
Polish mobile onboarding and profile setup (#8438)
Originally stacked on #8375, now merged. Rebased onto main. Polishes the onboarding landing page, community-link entry, and recovery sheets. Profile setup uses a consistent sheet with a larger avatar, inline display name, and draft photo/emoji/animated editing; iOS uses native controls and coordinated avatar/sheet transitions. Validation: mobile analysis, full tests, and normal pre-push checks passed after rebase. Prior iOS build and device walkthrough passed; native validation was not repeated after this rebase. Snapshots omitted as requested. --------- Signed-off-by: kenny lopez <klopez4212@gmail.com> Signed-off-by: Tom Brow <tomb@block.xyz> Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz> Co-authored-by: Tom Brow <tomb@block.xyz>
This commit is contained in:
@@ -158,6 +158,48 @@ void main() {
|
||||
},
|
||||
);
|
||||
|
||||
test(
|
||||
'profile draft retries without completing and skip does not prepare media',
|
||||
() async {
|
||||
var prepares = 0;
|
||||
var attempts = 0;
|
||||
final pending = f.flow.requestProfile(
|
||||
(_) async {},
|
||||
saveDraft: (name, prepare) async {
|
||||
await prepare?.call();
|
||||
if (++attempts == 1) throw StateError('offline');
|
||||
writes.add(name);
|
||||
},
|
||||
);
|
||||
final save = f.flow.saveProfileDraft!;
|
||||
Future<String> prepare() async {
|
||||
prepares++;
|
||||
return 'https://media.example/photo';
|
||||
}
|
||||
|
||||
await expectLater(save('Name', prepare), throwsStateError);
|
||||
expect(f.flow.stage, HostedFlowStage.profile);
|
||||
await save('Name', prepare);
|
||||
await pending;
|
||||
expect(writes, ['Name']);
|
||||
expect(prepares, 2);
|
||||
final skipped = f.flow.requestProfile(
|
||||
(_) async {},
|
||||
saveDraft: (_, prepare) async {
|
||||
await prepare?.call();
|
||||
},
|
||||
);
|
||||
final stale = f.flow.saveProfileDraft!;
|
||||
f.flow.finishProfile();
|
||||
await skipped;
|
||||
await expectLater(
|
||||
stale('Old', prepare),
|
||||
throwsA(AccountFailure.unavailable),
|
||||
);
|
||||
expect(prepares, 2);
|
||||
},
|
||||
);
|
||||
|
||||
for (final cancelAdmission in [false, true]) {
|
||||
test(
|
||||
'leave rejects captured save (cancel admission: $cancelAdmission)',
|
||||
|
||||
Reference in New Issue
Block a user