added double tap account change support

This commit is contained in:
Kima
2023-05-27 12:42:23 +02:00
parent be1265fc87
commit 08faa694f2
3 changed files with 107 additions and 37 deletions

View File

@@ -1,4 +1,15 @@
import 'package:filcnaplo/api/providers/user_provider.dart';
import 'package:filcnaplo/models/settings.dart';
import 'package:filcnaplo/models/user.dart';
import 'package:filcnaplo_kreta_api/client/client.dart';
import 'package:filcnaplo_kreta_api/providers/absence_provider.dart';
import 'package:filcnaplo_kreta_api/providers/event_provider.dart';
import 'package:filcnaplo_kreta_api/providers/exam_provider.dart';
import 'package:filcnaplo_kreta_api/providers/grade_provider.dart';
import 'package:filcnaplo_kreta_api/providers/homework_provider.dart';
import 'package:filcnaplo_kreta_api/providers/message_provider.dart';
import 'package:filcnaplo_kreta_api/providers/note_provider.dart';
import 'package:filcnaplo_kreta_api/providers/timetable_provider.dart';
import 'package:filcnaplo_mobile_ui/common/profile_image/profile_image.dart';
import 'package:filcnaplo_mobile_ui/screens/settings/settings_screen.dart';
import 'package:flutter/material.dart';
@@ -15,6 +26,28 @@ class ProfileButton extends StatelessWidget {
final bool pMode =
Provider.of<SettingsProvider>(context, listen: false).presentationMode;
late UserProvider user;
late User? account;
Future<void> restore() => Future.wait([
Provider.of<GradeProvider>(context, listen: false).restore(),
Provider.of<TimetableProvider>(context, listen: false).restoreUser(),
Provider.of<ExamProvider>(context, listen: false).restore(),
Provider.of<HomeworkProvider>(context, listen: false).restore(),
Provider.of<MessageProvider>(context, listen: false).restore(),
Provider.of<NoteProvider>(context, listen: false).restore(),
Provider.of<EventProvider>(context, listen: false).restore(),
Provider.of<AbsenceProvider>(context, listen: false).restore(),
Provider.of<KretaClient>(context, listen: false).refreshLogin(),
]);
user = Provider.of<UserProvider>(context);
try {
account = user.getUsers()[1];
} catch (err) {
account = null;
}
return ProfileImage(
backgroundColor: !pMode
? child.backgroundColor
@@ -48,6 +81,12 @@ class ProfileButton extends StatelessWidget {
),
);
},
onDoubleTap: () {
if (account != null) {
user.setUser(account.id);
restore().then((_) => user.setUser(account!.id));
}
},
);
}
}