EmailViewModel.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. /* Note: this file is derived from a template located in the following repository:
  2. * https://github.com/googlecodelabs/android-room-with-a-view
  3. *
  4. * This means was originally licensed under the Apache License 2.0, which can be found
  5. * in the text file 'APL' in the root directory of this repository. Any changes made to
  6. * this file however are licensed under the GNU General Public License Version 3.0,
  7. * which can be found in the file 'LICENSE' in the root directory of this repository.
  8. */
  9. package com.noahvogt.snailmail.data;
  10. import android.app.Application;
  11. import androidx.lifecycle.LiveData;
  12. import androidx.lifecycle.AndroidViewModel;
  13. import androidx.work.OneTimeWorkRequest;
  14. import androidx.work.WorkManager;
  15. import com.noahvogt.snailmail.database.EmailRepository;
  16. import com.noahvogt.snailmail.database.Message;
  17. import com.noahvogt.snailmail.workers.DownloadWorker;
  18. import java.util.ArrayList;
  19. import java.util.List;
  20. import static com.noahvogt.snailmail.MainActivity.userGlobal;
  21. public class EmailViewModel extends AndroidViewModel {
  22. private EmailRepository mEmailRepository;
  23. private WorkManager mWorkManager;
  24. public List<Message> all = new ArrayList<>();
  25. private LiveData<List<Message>> mDraftMessage;
  26. private LiveData<List<Message>> mInboxMessage;
  27. private LiveData<List<Message>> mSentMessage;
  28. private LiveData<List<Message>> mArchiveMessage;
  29. private LiveData<List<Message>> mSpamMessage;
  30. private List<Message> mAllMessages;
  31. String sent;
  32. String spam;
  33. String archive;
  34. String inbox;
  35. String drafts;
  36. public EmailViewModel(Application application) {
  37. super(application);
  38. mWorkManager = WorkManager.getInstance(application);
  39. mEmailRepository = new EmailRepository(application);
  40. mInboxMessage = mEmailRepository.getInboxMessages();
  41. mDraftMessage = mEmailRepository.getDraftMessages();
  42. mSentMessage = mEmailRepository.getSentMessages();
  43. mArchiveMessage = mEmailRepository.getArchiveMessages();
  44. mSpamMessage = mEmailRepository.getSpamMessage();
  45. }
  46. /*requests Worker and applies password, email to it */
  47. public void applyDownload(){
  48. OneTimeWorkRequest downloadRequest =
  49. new OneTimeWorkRequest.Builder(DownloadWorker.class)
  50. .build();
  51. mWorkManager.enqueue(downloadRequest);
  52. }
  53. public void setListAll(List<Message> messageListAll, String fragment, Boolean isDownloading){
  54. /*if Messages being downloaded*/
  55. if (isDownloading){return;}
  56. if (userGlobal == null){return;}
  57. if (sent == null && fragment.equals("Sent")){
  58. for (int i = 0; i < messageListAll.size(); i++) {
  59. this.all.add(messageListAll.get(i));
  60. }
  61. sent = fragment;
  62. }
  63. if (drafts == null && fragment.equals("Drafts")){
  64. for (int i = 0; i < messageListAll.size(); i++) {
  65. this.all.add(messageListAll.get(i));
  66. }
  67. drafts = fragment;
  68. }
  69. if (archive == null && fragment.equals("Archive")){
  70. for (int i = 0; i < messageListAll.size(); i++) {
  71. this.all.add(messageListAll.get(i));
  72. }
  73. archive = fragment;
  74. }
  75. if (inbox == null && fragment.equals("Inbox")){
  76. for (int i = 0; i < messageListAll.size(); i++) {
  77. this.all.add(messageListAll.get(i));
  78. }
  79. inbox = fragment;
  80. }
  81. if (spam == null && fragment.equals("Spam")){
  82. for (int i = 0; i < messageListAll.size(); i++) {
  83. this.all.add(messageListAll.get(i));
  84. }
  85. spam = fragment;
  86. }
  87. }
  88. public List<Message> getAll(boolean status){
  89. for (int i = 0; i < all.size(); i++) {
  90. }
  91. if (status){
  92. List<Message> emptyAll;
  93. emptyAll = all;
  94. all.clear();
  95. sent = null;
  96. spam = null;
  97. archive = null;
  98. inbox = null;
  99. drafts = null;
  100. return emptyAll;
  101. }
  102. return all;
  103. }
  104. public LiveData<List<Message>> getDraftMessage(){ return mDraftMessage; }
  105. public LiveData<List<Message>> getSpamMessage(){return mSpamMessage;}
  106. public LiveData<List<Message>> getInboxMessage(){ return mInboxMessage;}
  107. public LiveData<List<Message>> getSentMessage(){ return mSentMessage;}
  108. public LiveData<List<Message>> getArchiveMessage(){ return mArchiveMessage;}
  109. public List<Message> getAllMessages(){
  110. mAllMessages = mEmailRepository.getAllMessages();
  111. return mAllMessages;}
  112. public void insert(Message message){mEmailRepository.insert(message);}
  113. public void deleteMessage(Message message){mEmailRepository.deleteMessage(message);}
  114. public void updateFolder(int id, String folder){mEmailRepository.updateFolder(id, folder);}
  115. public void updateDate(int id, String date){ mEmailRepository.updateDate(id, date); }
  116. }