init static method

Future<void> init({
  1. required String generateTokenUrl,
  2. List<SQField>? userDocFields,
})

Implementation

static Future<void> init({
  required String generateTokenUrl,
  List<SQField<dynamic>>? userDocFields,
}) async {
  if (!isSignedIn)
    await SQFirebaseAuth._loginWithCustomToken(generateTokenUrl);

  userDocFields ??= [];
  userDocFields
    ..insert(
        0,
        SQStringField('User ID')
          ..editable = false
          ..show = falseCond)
    ..insert(0, SQStringField('Username')..editable = false);

  usersCollection = FirestoreCollection(
    id: 'Users',
    fields: userDocFields,
    updates: const SQUpdates(adds: false, deletes: false),
  );

  await usersCollection.loadCollection();

  if (isSignedIn) {
    userDoc = usersCollection.getDoc(user!.uid);
    userDoc ??= usersCollection.newDoc(id: user!.uid);
    userDoc!.setValue('Username', MiniApp.user.username ?? MiniApp.user.id);
    userDoc!.setValue('User ID', MiniApp.user.id);
    unawaited(SQApp.analytics?.setUserId(user!.uid));
    await usersCollection.saveDoc(userDoc!);
  } else {
    userDoc = null;
  }
}