message.dart 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. import 'package:easy_localization/easy_localization.dart';
  2. import 'package:flutter/cupertino.dart';
  3. import 'package:flutter/foundation.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:flutter/services.dart';
  6. import 'package:provider/provider.dart';
  7. import 'package:telnow_mobile_new/src/api/api_auth_provider.dart';
  8. import 'package:telnow_mobile_new/src/api/jwt_token.dart';
  9. import 'package:telnow_mobile_new/src/layouts/mobile/message_broadcast.dart';
  10. import 'package:telnow_mobile_new/src/layouts/mobile/message_select.dart';
  11. import 'package:telnow_mobile_new/src/layouts/components/template.dart';
  12. import 'package:telnow_mobile_new/src/layouts/web/message_broadcast.dart';
  13. import 'package:telnow_mobile_new/src/utils/C.dart';
  14. import 'package:telnow_mobile_new/src/utils/U.dart';
  15. import 'package:telnow_mobile_new/src/utils/cache_manager.dart';
  16. import 'package:telnow_mobile_new/src/utils/provider.dart';
  17. import 'package:url_launcher/url_launcher.dart';
  18. class MessageFunction{
  19. final ApiAuthProvider apiAuthProvider = ApiAuthProvider();
  20. final JwtToken token = JwtToken();
  21. getUser(BuildContext context)async{
  22. var res = await token.getUserData(context);
  23. if(res != null){
  24. Provider.of<MessageModule>(context, listen: false).setUser(res);
  25. getDataMessages(context);
  26. }
  27. }
  28. getDataMessages(BuildContext context) async {
  29. if(await U.isCompatibleWith(VersionKey.multiBahasa)) getDataForum(context);
  30. String url = '/api/messages/search/myMessages';
  31. var val = await CacheMan.readData(url);
  32. if (val != null) {
  33. Provider.of<MessageModule>(context, listen: false).setData(val['data']);
  34. }
  35. var res = await apiAuthProvider.getData(url, null, context);
  36. if (res != null) {
  37. List tempData = [];
  38. if (res['_embedded'] != null) {
  39. for (int i = 0; i < res['_embedded']['myMessages'].length; i++) {
  40. tempData.add(res['_embedded']['myMessages'][i]);
  41. }
  42. }
  43. CacheMan.writeData(url, tempData);
  44. Provider.of<MessageModule>(context, listen: false).setData(tempData);
  45. Provider.of<MessageModule>(context, listen: false).setFirstLoad(true);
  46. } else {
  47. Provider.of<MessageModule>(context, listen: false).setFirstLoad(true);
  48. }
  49. }
  50. getDataForum(BuildContext context) async{
  51. String url = '/api/messages/search/myForum';
  52. var val = await CacheMan.readData(url);
  53. final messageModule = Provider.of<MessageModule>(context,listen: false);
  54. if (val != null){
  55. messageModule.setForum(val['data']);
  56. }
  57. var res = await apiAuthProvider.getData(url, null, context);
  58. if (res != null) {
  59. List tempData = [];
  60. for (int i = 0; i < res.length; i++) {
  61. tempData.add(res[i]);
  62. }
  63. CacheMan.writeData(url, tempData);
  64. messageModule.setForum(tempData);
  65. messageModule.setFirstLoad(true);
  66. } else {
  67. messageModule.setFirstLoad(true);
  68. }
  69. }
  70. setAsRead(context, ticketNo) async {
  71. var res = await apiAuthProvider.postData('/api/notifications/readMyForum/$ticketNo', null, null, context);
  72. if (res != null) {
  73. }
  74. }
  75. createMessage(BuildContext context) async{
  76. String url = '/api/tenants/search/customFind';
  77. List dataTenant = [];
  78. var val = await CacheMan.readData(url);
  79. if (val != null) {
  80. dataTenant.addAll(val['data']);
  81. }
  82. try{
  83. var res = await apiAuthProvider.getData(url, {'isPaged': 'true', 'size': '1000', 'sort': 'description'}, context);
  84. if (res != null) {
  85. List tempData = [];
  86. if (res['_embedded'] != null) {
  87. for (int i = 0; i < res['_embedded']['tenants'].length; i++) {
  88. tempData.add(res['_embedded']['tenants'][i]);
  89. }
  90. if (tempData.length != 0) {
  91. CacheMan.writeData(url, tempData);
  92. }
  93. if(dataTenant.isEmpty){
  94. dataTenant.addAll(tempData);
  95. }
  96. }
  97. }
  98. } catch(e){
  99. print(e.toString());
  100. }
  101. if(U.webView(context)){
  102. navigateTo(context, WebMessageBroadcastPage(Provider.of<MessageModule>(context, listen: false).user(), dataTenant));
  103. }
  104. else{
  105. navigateTo(context, dataTenant.isEmpty ? MobMessageBroadcastPage(Provider.of<MessageModule>(context, listen: false).user(), []) : MobMessageSelectPage(Provider.of<MessageModule>(context, listen: false).user(), dataTenant));
  106. }
  107. onRefresh(context);
  108. }
  109. timeSet(time) {
  110. final now = DateTime.now();
  111. var localDateTime = DateTime.parse(time);
  112. if (localDateTime.day == now.day && localDateTime.month == now.month && localDateTime.year == now.year) {
  113. return DateFormat('Hm').format(localDateTime);
  114. }
  115. DateTime yesterday = now.subtract(Duration(days: 1));
  116. if (localDateTime.day == yesterday.day && localDateTime.month == yesterday.month && localDateTime.year == yesterday.year) {
  117. return 'yesterday'.tr();
  118. }
  119. return DateFormat('yMd').format(localDateTime);
  120. }
  121. onRefresh(BuildContext context) {
  122. try {
  123. getDataMessages(context);
  124. } catch (e) {
  125. print(e.toString());
  126. }
  127. }
  128. }