account.dart 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import 'package:auto_route/auto_route.dart';
  2. import 'package:easy_localization/easy_localization.dart';
  3. import 'package:flutter/cupertino.dart';
  4. import 'package:provider/provider.dart';
  5. import 'package:telnow_mobile_new/main.dart';
  6. import 'package:telnow_mobile_new/src/api/api_auth_provider.dart';
  7. import 'package:telnow_mobile_new/src/api/jwt_token.dart';
  8. import 'package:telnow_mobile_new/src/layouts/components/template.dart';
  9. import 'package:telnow_mobile_new/src/storage/sharedpreferences/shared_preferences_manager.dart';
  10. import 'package:telnow_mobile_new/src/utils/C.dart';
  11. import 'package:telnow_mobile_new/src/utils/U.dart';
  12. import 'package:telnow_mobile_new/src/utils/provider.dart';
  13. class AccountFunction{
  14. final ApiAuthProvider apiAuthProvider = ApiAuthProvider();
  15. final NotificationClass notification = NotificationClass();
  16. final JwtToken token = JwtToken();
  17. final SharedPreferencesManager _sharedPreferencesManager = SharedPreferencesManager();
  18. getUser(BuildContext context) async {
  19. var res = await token.getUserData(context);
  20. if (res != null) {
  21. var ver = await apiAuthProvider.getDataNoAuth('/api/license');
  22. Provider.of<UserModule>(context, listen: false).setSerialNum(ver['serialNumber']);
  23. Provider.of<UserModule>(context, listen: false).setList(res);
  24. } else {
  25. Provider.of<UserModule>(context, listen: false).setResetData(true);
  26. }
  27. }
  28. switchLang(BuildContext context, code, user) async {
  29. showLoading(context);
  30. var locale = 'id';
  31. if(code is int){
  32. var vl = U.retValidLang();
  33. locale = vl[code+1];
  34. code = code.toString();
  35. } else {
  36. locale = code;
  37. }
  38. try{
  39. Map<String, dynamic> p;
  40. if(await U.isCompatibleWith(VersionKey.multiBahasa)){
  41. p = {'userId': user['userId'], 'language': 'ID', '_language': code.toUpperCase()};
  42. } else {
  43. p = {'userId': user['userId'], 'language': code.toUpperCase()};
  44. }
  45. var res = await apiAuthProvider.patchData('/api/informants/' + user['id'].toString(), p, context);
  46. if (res != null) {
  47. closeLoading(context);
  48. context.setLocale(Locale(locale));
  49. notification.startNotification(context, code: code);
  50. // Navigator.of(context).pop();
  51. } else {
  52. closeLoading(context);
  53. }
  54. }catch(e){
  55. closeLoading(context);
  56. }
  57. }
  58. Future<bool> setDndStatus(BuildContext context, bool dnd)async{
  59. var res = await apiAuthProvider.patchData('/api/informants/${Provider.of<UserModule>(context, listen: false).user()['id']}/setDnd', null, context, params: {'dnd': '${!dnd}'});
  60. if (res != null) {
  61. Provider.of<UserModule>(context, listen: false).setDndStatus(dnd);
  62. return true;
  63. }
  64. return false;
  65. }
  66. logoutAction(BuildContext context)async{
  67. showLoading(context, text: '');
  68. String pid = U.getPidFromUrl(context.router.currentUrl);
  69. try {
  70. var tkn = await _sharedPreferencesManager.getString(SharedPreferencesManager.keyFcmToken);
  71. // var tkn = await U.getFcmToken();
  72. if (tkn == null) {
  73. Navigator.of(context).pop();
  74. closeLoading(context);
  75. token.logout();
  76. // context.router.removeLast();
  77. context.navigateToPath("/app/$pid/login");
  78. } else {
  79. var param = {'token': tkn, 'whiteListToken': false};
  80. var res = await apiAuthProvider.postData('/api/fcmTokens/remove/', null, param);
  81. if (res != null && res['success']) {
  82. Navigator.of(context).pop();
  83. closeLoading(context);
  84. token.logout();
  85. // context.router.removeLast();
  86. context.navigateToPath("/app/$pid/login");
  87. }
  88. else{
  89. Future.delayed(const Duration(seconds: 5), () => closeLoading(context));
  90. }
  91. }
  92. } catch(e) {
  93. print(e.toString());
  94. // context.router.removeLast();
  95. context.navigateToPath("/app/$pid/login");
  96. }
  97. }
  98. }