浏览代码

emails change with account, maybe bug with opening mails

Simon Hammer 3 年之前
父节点
当前提交
098f932bed

+ 9 - 3
app/schemas/com.noahvogt.miniprojekt.DataBase.EmailRoomDatabase/1.json

@@ -2,11 +2,11 @@
   "formatVersion": 1,
   "formatVersion": 1,
   "database": {
   "database": {
     "version": 1,
     "version": 1,
-    "identityHash": "217605d4a5ec0067e9003ad5b099a303",
+    "identityHash": "22874ef127ac5669572671e40c064f64",
     "entities": [
     "entities": [
       {
       {
         "tableName": "message_table",
         "tableName": "message_table",
-        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `to` TEXT NOT NULL, `cc` TEXT, `bcc` TEXT, `fromEmail` TEXT NOT NULL, `date` TEXT NOT NULL, `subject` TEXT, `textContent` TEXT, `folder` TEXT NOT NULL, `seen` INTEGER NOT NULL)",
+        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `user` TEXT NOT NULL, `to` TEXT NOT NULL, `cc` TEXT, `bcc` TEXT, `fromEmail` TEXT NOT NULL, `date` TEXT NOT NULL, `subject` TEXT, `textContent` TEXT, `folder` TEXT NOT NULL, `seen` INTEGER NOT NULL)",
         "fields": [
         "fields": [
           {
           {
             "fieldPath": "id",
             "fieldPath": "id",
@@ -14,6 +14,12 @@
             "affinity": "INTEGER",
             "affinity": "INTEGER",
             "notNull": true
             "notNull": true
           },
           },
+          {
+            "fieldPath": "mUser",
+            "columnName": "user",
+            "affinity": "TEXT",
+            "notNull": true
+          },
           {
           {
             "fieldPath": "mTo",
             "fieldPath": "mTo",
             "columnName": "to",
             "columnName": "to",
@@ -82,7 +88,7 @@
     "views": [],
     "views": [],
     "setupQueries": [
     "setupQueries": [
       "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
       "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
-      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '217605d4a5ec0067e9003ad5b099a303')"
+      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '22874ef127ac5669572671e40c064f64')"
     ]
     ]
   }
   }
 }
 }

+ 12 - 9
app/src/main/java/com/noahvogt/miniprojekt/DataBase/EmailRepository.java

@@ -6,6 +6,8 @@ import androidx.lifecycle.LiveData;
 
 
 import java.util.List;
 import java.util.List;
 
 
+import static com.noahvogt.miniprojekt.MainActivity.userGlobal;
+
 public class EmailRepository {
 public class EmailRepository {
 
 
     private MessageDao messageDao;
     private MessageDao messageDao;
@@ -18,7 +20,6 @@ public class EmailRepository {
     private List<Message> mAllMessages;
     private List<Message> mAllMessages;
 
 
 
 
-
     // Note that in order to unit test the WordRepository, you have to remove the Application
     // Note that in order to unit test the WordRepository, you have to remove the Application
     // dependency. This adds complexity and much more code, and this sample is not about testing.
     // dependency. This adds complexity and much more code, and this sample is not about testing.
     // See the BasicSample in the android-architecture-components repository at
     // See the BasicSample in the android-architecture-components repository at
@@ -27,11 +28,11 @@ public class EmailRepository {
     public EmailRepository(Application application) {
     public EmailRepository(Application application) {
         EmailRoomDatabase db = EmailRoomDatabase.getDatabase(application);
         EmailRoomDatabase db = EmailRoomDatabase.getDatabase(application);
         messageDao = db.messageDao();
         messageDao = db.messageDao();
-        mInboxLiveMessage = messageDao.getLiveInboxMessages();
-        mDraftLiveMessage = messageDao.getLiveDraftMessages();
-        mArchiveLiveMessage = messageDao.getLiveArchiveMessages();
-        mSentLiveMessage = messageDao.getLiveSentMessages();
-        mSpamLiveMessage = messageDao.getLiveSpamMessages();
+        mInboxLiveMessage = messageDao.getLiveInboxMessages(userGlobal);
+        mDraftLiveMessage = messageDao.getLiveDraftMessages(userGlobal);
+        mArchiveLiveMessage = messageDao.getLiveArchiveMessages(userGlobal);
+        mSentLiveMessage = messageDao.getLiveSentMessages(userGlobal);
+        mSpamLiveMessage = messageDao.getLiveSpamMessages(userGlobal);
     }
     }
 
 
     // Room executes all queries on a separate thread.
     // Room executes all queries on a separate thread.
@@ -55,10 +56,12 @@ public class EmailRepository {
         return mArchiveLiveMessage;
         return mArchiveLiveMessage;
     }
     }
 
 
-    /* problems with main Thread
-    public List<Message> getAllMessages(){ return mAllMessages;}
+    /*problems with main Thread */
+    public List<Message> getAllMessages(){
+        //mAllMessages = messageDao.getAllMessages();
+        return mAllMessages;}
+
 
 
-     */
 
 
     // You must call this on a non-UI thread or your app will throw an exception. Room ensures
     // You must call this on a non-UI thread or your app will throw an exception. Room ensures
     // that you're not doing any long running operations on the main thread, blocking the UI.
     // that you're not doing any long running operations on the main thread, blocking the UI.

+ 12 - 0
app/src/main/java/com/noahvogt/miniprojekt/DataBase/Message.java

@@ -16,6 +16,10 @@ public class Message {
 
 
     @PrimaryKey (autoGenerate = true)
     @PrimaryKey (autoGenerate = true)
     public int id;
     public int id;
+    
+    @NonNull
+    @ColumnInfo(name = "user")
+    private String mUser;
 
 
     /* name of Columm */
     /* name of Columm */
     @NonNull
     @NonNull
@@ -58,6 +62,8 @@ public class Message {
     @SerializedName("seen")
     @SerializedName("seen")
     private boolean mSeen;
     private boolean mSeen;
 
 
+    public String getUser(){return this.mUser;}
+
     public String getTo(){return this.mTo;}
     public String getTo(){return this.mTo;}
 
 
     public String getFrom(){return this.mFrom;}
     public String getFrom(){return this.mFrom;}
@@ -78,7 +84,12 @@ public class Message {
 
 
     public boolean isSeen() {return this.mSeen;}
     public boolean isSeen() {return this.mSeen;}
 
 
+    public void putUser(String user){ this.mUser = user;}
+
+    public void putDate(String date){this.mDate = date;}
+
     public Message(
     public Message(
+            @NonNull String user,
             @NonNull String to,
             @NonNull String to,
             String cc,
             String cc,
             String bcc,
             String bcc,
@@ -97,6 +108,7 @@ public class Message {
         this.mTextContent = textContent;
         this.mTextContent = textContent;
         this.mFolder = folder;
         this.mFolder = folder;
         this.mSeen = seen;
         this.mSeen = seen;
+        this.mUser = user;
     }
     }
 
 
 }
 }

+ 10 - 11
app/src/main/java/com/noahvogt/miniprojekt/DataBase/MessageDao.java

@@ -34,7 +34,6 @@ public interface MessageDao {
     @Query("UPDATE message_table SET date = :date WHERE id = :id")
     @Query("UPDATE message_table SET date = :date WHERE id = :id")
     void updateDate(int id, String date);
     void updateDate(int id, String date);
 
 
-
     @Query("SELECT * FROM message_table ORDER BY id ASC")
     @Query("SELECT * FROM message_table ORDER BY id ASC")
     List<Message> getAllMessages();
     List<Message> getAllMessages();
 
 
@@ -43,36 +42,36 @@ public interface MessageDao {
     LiveData<List<Message>> getDateMessages();
     LiveData<List<Message>> getDateMessages();
 
 
     /* get Draft messages*/
     /* get Draft messages*/
-    @Query("SELECT * FROM message_table WHERE folder LIKE 'Draft' ORDER BY date DESC")
-    LiveData<List<Message>> getLiveDraftMessages();
+    @Query("SELECT * FROM message_table WHERE user = :user AND folder LIKE 'Draft' ORDER BY date DESC")
+    LiveData<List<Message>> getLiveDraftMessages(String user);
 
 
     @Query("SELECT * FROM message_table WHERE folder LIKE 'Draft' ORDER BY date DESC")
     @Query("SELECT * FROM message_table WHERE folder LIKE 'Draft' ORDER BY date DESC")
     List<Message> getDraftMessages();
     List<Message> getDraftMessages();
 
 
     /* get Inbox messages*/
     /* get Inbox messages*/
-    @Query("SELECT * FROM message_table WHERE folder LIKE 'Inbox' ORDER BY date DESC")
-    LiveData<List<Message>> getLiveInboxMessages();
+    @Query("SELECT * FROM message_table WHERE user = :user AND folder LIKE 'Inbox' ORDER BY date DESC")
+    LiveData<List<Message>> getLiveInboxMessages(String user);
 
 
     @Query("SELECT * FROM message_table WHERE folder LIKE 'Inbox' ORDER BY date DESC")
     @Query("SELECT * FROM message_table WHERE folder LIKE 'Inbox' ORDER BY date DESC")
     List<Message> getInboxMessages();
     List<Message> getInboxMessages();
 
 
     /* get Sent messages*/
     /* get Sent messages*/
-    @Query("SELECT * FROM message_table WHERE folder LIKE 'Sent' ORDER BY date DESC")
-    LiveData<List<Message>> getLiveSentMessages();
+    @Query("SELECT * FROM message_table WHERE user = :user AND folder LIKE 'Sent' ORDER BY date DESC")
+    LiveData<List<Message>> getLiveSentMessages(String user);
 
 
     @Query("SELECT * FROM message_table WHERE folder LIKE 'Sent' ORDER BY date DESC")
     @Query("SELECT * FROM message_table WHERE folder LIKE 'Sent' ORDER BY date DESC")
     List<Message> getSentMessages();
     List<Message> getSentMessages();
 
 
     /* get Archive messages*/
     /* get Archive messages*/
-    @Query("SELECT * FROM message_table WHERE folder LIKE 'Archive' ORDER BY date DESC")
-    LiveData<List<Message>> getLiveArchiveMessages();
+    @Query("SELECT * FROM message_table WHERE user = :user AND folder LIKE 'Archive' ORDER BY date DESC")
+    LiveData<List<Message>> getLiveArchiveMessages(String user);
 
 
     @Query("SELECT * FROM message_table WHERE folder LIKE 'Archive' ORDER BY date DESC")
     @Query("SELECT * FROM message_table WHERE folder LIKE 'Archive' ORDER BY date DESC")
     List<Message> getArchiveMessages();
     List<Message> getArchiveMessages();
 
 
     /* get Spam messages*/
     /* get Spam messages*/
-    @Query("SELECT * FROM message_table WHERE folder LIKE 'Spam' ORDER BY date DESC")
-    LiveData<List<Message>> getLiveSpamMessages();
+    @Query("SELECT * FROM message_table WHERE user = :user AND folder LIKE 'Spam' ORDER BY date DESC")
+    LiveData<List<Message>> getLiveSpamMessages(String user);
 
 
     @Query("SELECT * FROM message_table WHERE folder LIKE 'Spam' ORDER BY date DESC")
     @Query("SELECT * FROM message_table WHERE folder LIKE 'Spam' ORDER BY date DESC")
     List<Message> getSpamMessages();
     List<Message> getSpamMessages();

+ 15 - 26
app/src/main/java/com/noahvogt/miniprojekt/MainActivity.java

@@ -6,16 +6,13 @@ import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.os.Bundle;
 import android.util.Log;
 import android.util.Log;
-import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.View;
-import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
 import android.widget.ArrayAdapter;
 import android.widget.AutoCompleteTextView;
 import android.widget.AutoCompleteTextView;
 import android.widget.Button;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.EditText;
-import android.widget.PopupMenu;
 import android.widget.TextView;
 import android.widget.TextView;
 import android.widget.Toast;
 import android.widget.Toast;
 
 
@@ -27,7 +24,6 @@ import androidx.fragment.app.DialogFragment;
 
 
 
 
 import com.google.android.material.floatingactionbutton.FloatingActionButton;
 import com.google.android.material.floatingactionbutton.FloatingActionButton;
-import com.google.gson.GsonBuilder;
 import com.google.gson.reflect.TypeToken;
 import com.google.gson.reflect.TypeToken;
 import com.noahvogt.miniprojekt.DataBase.Message;
 import com.noahvogt.miniprojekt.DataBase.Message;
 
 
@@ -44,21 +40,16 @@ import androidx.navigation.NavController;
 import androidx.navigation.Navigation;
 import androidx.navigation.Navigation;
 import androidx.navigation.ui.AppBarConfiguration;
 import androidx.navigation.ui.AppBarConfiguration;
 import androidx.navigation.ui.NavigationUI;
 import androidx.navigation.ui.NavigationUI;
-import androidx.work.Data;
 
 
 import com.chaquo.python.Python;
 import com.chaquo.python.Python;
 import com.chaquo.python.android.AndroidPlatform;
 import com.chaquo.python.android.AndroidPlatform;
-import com.google.android.material.snackbar.Snackbar;
 import com.noahvogt.miniprojekt.data.CustomAdapter;
 import com.noahvogt.miniprojekt.data.CustomAdapter;
-import com.noahvogt.miniprojekt.data.DeleteThread;
 import com.noahvogt.miniprojekt.data.EmailViewModel;
 import com.noahvogt.miniprojekt.data.EmailViewModel;
 import com.noahvogt.miniprojekt.data.MailFunctions;
 import com.noahvogt.miniprojekt.data.MailFunctions;
 import com.noahvogt.miniprojekt.workers.DownloadWorker;
 import com.noahvogt.miniprojekt.workers.DownloadWorker;
 import com.noahvogt.miniprojekt.ui.show.MessageShowFragment;
 import com.noahvogt.miniprojekt.ui.show.MessageShowFragment;
-import com.noahvogt.miniprojekt.data.BooleanTypeAdapter;
 
 
 import java.lang.reflect.Type;
 import java.lang.reflect.Type;
-import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.Date;
@@ -69,9 +60,6 @@ import com.google.gson.Gson;
 
 
 
 
 import static com.noahvogt.miniprojekt.R.id.drawer_layout;
 import static com.noahvogt.miniprojekt.R.id.drawer_layout;
-import static com.noahvogt.miniprojekt.R.id.exitButton;
-
-import org.w3c.dom.Text;
 
 
 public class MainActivity extends AppCompatActivity implements View.OnClickListener, CustomAdapter.SelectedMessage {
 public class MainActivity extends AppCompatActivity implements View.OnClickListener, CustomAdapter.SelectedMessage {
 
 
@@ -85,6 +73,8 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     public static RecyclerView recyclerView;
     public static RecyclerView recyclerView;
     private Boolean clicked = false;
     private Boolean clicked = false;
 
 
+    public static String userGlobal;
+
     private AlertDialog dialog;
     private AlertDialog dialog;
     private EditText newemail_name, newemail_email, newemail_password; /* may not be private */
     private EditText newemail_name, newemail_email, newemail_password; /* may not be private */
 
 
@@ -111,6 +101,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
 
 
     }
     }
 
 
+
     @Override
     @Override
     protected void onCreate(Bundle savedInstanceState) {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         super.onCreate(savedInstanceState);
@@ -164,6 +155,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                     showCurrentUserObject.setText("current user:\nNone");
                     showCurrentUserObject.setText("current user:\nNone");
                 } else {
                 } else {
                     showCurrentUserObject.setText(String.format("current user:\n%s", currentUser));
                     showCurrentUserObject.setText(String.format("current user:\n%s", currentUser));
+                    userGlobal = currentUser;
                 }
                 }
 
 
                 SharedPreferences.Editor credEditor = credReader.edit();
                 SharedPreferences.Editor credEditor = credReader.edit();
@@ -200,11 +192,15 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                         String jsonCredData = credReader.getString("data", "");
                         String jsonCredData = credReader.getString("data", "");
                         Type credentialsType = new TypeToken<ArrayList<MailServerCredentials>>(){}.getType();
                         Type credentialsType = new TypeToken<ArrayList<MailServerCredentials>>(){}.getType();
                         ArrayList<MailServerCredentials> currentUsersCredentials = gson.fromJson(jsonCredData, credentialsType);
                         ArrayList<MailServerCredentials> currentUsersCredentials = gson.fromJson(jsonCredData, credentialsType);
+                        showToast("clicked switch");
 
 
                         try {
                         try {
                             for (int i = 0; i < currentUsersCredentials.size(); i++) {
                             for (int i = 0; i < currentUsersCredentials.size(); i++) {
+                                showToast("Credentials: "+ currentUsersCredentials.get(i).getUsername());
+                                showToast("userInput: " + userInput);
                                 if (currentUsersCredentials.get(i).getUsername().equals(userInput)) {
                                 if (currentUsersCredentials.get(i).getUsername().equals(userInput)) {
                                     credEditor.putString("currentUser", userInput).apply();
                                     credEditor.putString("currentUser", userInput).apply();
+                                    userGlobal = userInput;
                                     showCurrentUserObject.setText(String.format("current user:\n%s", userInput));
                                     showCurrentUserObject.setText(String.format("current user:\n%s", userInput));
                                     showToast("switched account");
                                     showToast("switched account");
                                     updateNavHeaderText(headerView);
                                     updateNavHeaderText(headerView);
@@ -225,6 +221,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                         String jsonCredData = credReader.getString("data", "");
                         String jsonCredData = credReader.getString("data", "");
                         Type credentialsType = new TypeToken<ArrayList<MailServerCredentials>>(){}.getType();
                         Type credentialsType = new TypeToken<ArrayList<MailServerCredentials>>(){}.getType();
                         ArrayList<MailServerCredentials> currentUserCredentials = gson.fromJson(jsonCredData, credentialsType);
                         ArrayList<MailServerCredentials> currentUserCredentials = gson.fromJson(jsonCredData, credentialsType);
+                        showToast("clicked delete account");
 
 
                         try {
                         try {
                             for (int i = 0; i < currentUserCredentials.size(); i++) {
                             for (int i = 0; i < currentUserCredentials.size(); i++) {
@@ -232,7 +229,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                                     currentUserCredentials.remove(i);
                                     currentUserCredentials.remove(i);
 
 
                                     /* live update adapter for dropdown menu */
                                     /* live update adapter for dropdown menu */
-
                                     int k = 0;
                                     int k = 0;
                                     String[] newUserArray = new String[finalUserArray.length - 1];
                                     String[] newUserArray = new String[finalUserArray.length - 1];
                                     for (String s : finalUserArray) {
                                     for (String s : finalUserArray) {
@@ -254,9 +250,11 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                                         String usernameZero = currentUserCredentials.get(0).getUsername();
                                         String usernameZero = currentUserCredentials.get(0).getUsername();
                                         credEditor.putString("currentUser", usernameZero).apply();
                                         credEditor.putString("currentUser", usernameZero).apply();
                                         showCurrentUserObject.setText(String.format("current user:\n%s", usernameZero));
                                         showCurrentUserObject.setText(String.format("current user:\n%s", usernameZero));
+                                        userGlobal = usernameZero;
                                     } else {
                                     } else {
                                         credEditor.putString("currentUser", "").apply();
                                         credEditor.putString("currentUser", "").apply();
                                         showCurrentUserObject.setText("current user:\n None");
                                         showCurrentUserObject.setText("current user:\n None");
+                                        userGlobal = null;
                                     }
                                     }
                                     showToast("account removed");
                                     showToast("account removed");
                                     updateNavHeaderText(headerView);
                                     updateNavHeaderText(headerView);
@@ -374,7 +372,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
             System.out.println(dNow);
             System.out.println(dNow);
 
 
          //   if (requestCode == NEW_WORD_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
          //   if (requestCode == NEW_WORD_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
-                Message word = new Message(
+                Message word = new Message(userGlobal,
                         MessageCreateFragment.replyIntent.getStringExtra(MessageCreateFragment.EXTRA_TO),
                         MessageCreateFragment.replyIntent.getStringExtra(MessageCreateFragment.EXTRA_TO),
                         MessageCreateFragment.replyIntent.getStringExtra(MessageCreateFragment.EXTRA_CC),
                         MessageCreateFragment.replyIntent.getStringExtra(MessageCreateFragment.EXTRA_CC),
                         MessageCreateFragment.replyIntent.getStringExtra(MessageCreateFragment.EXTRA_BCC),
                         MessageCreateFragment.replyIntent.getStringExtra(MessageCreateFragment.EXTRA_BCC),
@@ -538,10 +536,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
 
 
     public static MailServerCredentials newMailServerCredentials;
     public static MailServerCredentials newMailServerCredentials;
     public static SharedPreferences.Editor credentialsEditor;
     public static SharedPreferences.Editor credentialsEditor;
-    String name;
-    String email;
-    String password;
-    Data.Builder builder = new Data.Builder();
 
 
     public void addNewAccountCredentials(String name, String email, String password, int imapPort,
     public void addNewAccountCredentials(String name, String email, String password, int imapPort,
                                          int smtpPort, String imapHost, String smtpHost, DialogInterface dialogContext,
                                          int smtpPort, String imapHost, String smtpHost, DialogInterface dialogContext,
@@ -665,19 +659,14 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                 String email = newemail_email.getText().toString();
                 String email = newemail_email.getText().toString();
                 String password = newemail_password.getText().toString();
                 String password = newemail_password.getText().toString();
 
 
-                builder = new Data.Builder();
-                builder.putString(emailData, email)
-                        .putString(passwordData, password)
-                        .putString(nameData, name);
-
-
                 if (!MailFunctions.validateEmail(newemail_email) | !MailFunctions.validateName(newemail_name) | !MailFunctions.validatePassword(newemail_password)) {
                 if (!MailFunctions.validateEmail(newemail_email) | !MailFunctions.validateName(newemail_name) | !MailFunctions.validatePassword(newemail_password)) {
                     return;
                     return;
                 }
                 }
 
 
                 addNewAccountCredentials(name, email, password, 993, 587, MailFunctions.getImapHostFromEmail(email),
                 addNewAccountCredentials(name, email, password, 993, 587, MailFunctions.getImapHostFromEmail(email),
                         MailFunctions.getSmtpHostFromEmail(email), rootCreateNewEmailPopupDialog, true, headerView);
                         MailFunctions.getSmtpHostFromEmail(email), rootCreateNewEmailPopupDialog, true, headerView);
-                mEmailViewModel.applyDownload(builder.build());
+                mEmailViewModel.applyDownload();
+                userGlobal = email;
                 dialog.dismiss();
                 dialog.dismiss();
         }});
         }});
 
 
@@ -714,7 +703,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                 createInformation(false,null);
                 createInformation(false,null);
                 return true;
                 return true;
             case R.id.action_refresh:
             case R.id.action_refresh:
-                mEmailViewModel.applyDownload(builder.build());
+                mEmailViewModel.applyDownload();
                 return true;
                 return true;
             case R.id.action_deletefolder:
             case R.id.action_deletefolder:
                 showToast("clicked delete all");
                 showToast("clicked delete all");

+ 9 - 1
app/src/main/java/com/noahvogt/miniprojekt/data/EmailViewHolder.java

@@ -3,6 +3,7 @@ package com.noahvogt.miniprojekt.data;
 import android.annotation.SuppressLint;
 import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.Context;
 import android.os.Build;
 import android.os.Build;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewGroup;
@@ -27,6 +28,7 @@ public class EmailViewHolder extends RecyclerView.ViewHolder {
     private final TextView subjectItemView;
     private final TextView subjectItemView;
     private final TextView dateItemView;
     private final TextView dateItemView;
     private final TextView messageItemView;
     private final TextView messageItemView;
+    private final String TAG = EmailViewHolder.class.getSimpleName();
 
 
 
 
     private EmailViewHolder(View itemView,
     private EmailViewHolder(View itemView,
@@ -40,9 +42,15 @@ public class EmailViewHolder extends RecyclerView.ViewHolder {
         System.out.println("Called EmailViewHolder");
         System.out.println("Called EmailViewHolder");
         
         
         itemView.setOnClickListener(new View.OnClickListener() {
         itemView.setOnClickListener(new View.OnClickListener() {
+
             @Override
             @Override
             public void onClick(View v) {
             public void onClick(View v) {
-                selectedMessage.selectedMessage(messageList.get(getBindingAdapterPosition()), null );
+                try {
+                    selectedMessage.selectedMessage(messageList.get(getBindingAdapterPosition()), null);
+                } catch (Throwable throwable){
+                    Toast.makeText(itemView.getContext(), "Could not open this Message", Toast.LENGTH_SHORT).show();
+                    Log.e(TAG, "Error by opening Message", throwable);
+                }
             }
             }
         });
         });
     }
     }

+ 6 - 3
app/src/main/java/com/noahvogt/miniprojekt/data/EmailViewModel.java

@@ -26,6 +26,7 @@ public class EmailViewModel extends AndroidViewModel {
     private LiveData<List<Message>> mSentMessage;
     private LiveData<List<Message>> mSentMessage;
     private LiveData<List<Message>> mArchiveMessage;
     private LiveData<List<Message>> mArchiveMessage;
     private LiveData<List<Message>> mSpamMessage;
     private LiveData<List<Message>> mSpamMessage;
+    private List<Message> mAllMessages;
 
 
     String sent;
     String sent;
     String spam;
     String spam;
@@ -42,13 +43,13 @@ public class EmailViewModel extends AndroidViewModel {
         mSentMessage = mEmailRepository.getSentMessages();
         mSentMessage = mEmailRepository.getSentMessages();
         mArchiveMessage = mEmailRepository.getArchiveMessages();
         mArchiveMessage = mEmailRepository.getArchiveMessages();
         mSpamMessage = mEmailRepository.getSpamMessage();
         mSpamMessage = mEmailRepository.getSpamMessage();
+        //mAllMessages = mEmailRepository.getAllMessages();
     }
     }
 
 
     /*requests Worker and applies password, email to it */
     /*requests Worker and applies password, email to it */
-    public void applyDownload(Data data){
+    public void applyDownload(){
         OneTimeWorkRequest downloadRequest =
         OneTimeWorkRequest downloadRequest =
                 new OneTimeWorkRequest.Builder(DownloadWorker.class)
                 new OneTimeWorkRequest.Builder(DownloadWorker.class)
-                        .setInputData(data)
                         .build();
                         .build();
 
 
         mWorkManager.enqueue(downloadRequest);
         mWorkManager.enqueue(downloadRequest);
@@ -117,7 +118,9 @@ public class EmailViewModel extends AndroidViewModel {
 
 
     public LiveData<List<Message>> getArchiveMessage(){ return mArchiveMessage;}
     public LiveData<List<Message>> getArchiveMessage(){ return mArchiveMessage;}
 
 
-    //public List<Message> getAllMessages(){return mAllMessages;}
+    public List<Message> getAllMessages(){
+        mAllMessages = mEmailRepository.getAllMessages();
+        return mAllMessages;}
 
 
     public void insert(Message message){mEmailRepository.insert(message);}
     public void insert(Message message){mEmailRepository.insert(message);}
 
 

+ 1 - 1
app/src/main/java/com/noahvogt/miniprojekt/ui/home/HomeFragment.java

@@ -55,7 +55,7 @@ public class HomeFragment extends Fragment implements CustomAdapter.SelectedMess
             adapter.getList(messages);
             adapter.getList(messages);
             /*gives list of messages to EmailViewModel */
             /*gives list of messages to EmailViewModel */
             MainActivity.mEmailViewModel.setListAll(messages, "Inbox");
             MainActivity.mEmailViewModel.setListAll(messages, "Inbox");
-
+            //mEmailViewModel.getAllMessages();
         });
         });
 
 
 
 

+ 5 - 9
app/src/main/java/com/noahvogt/miniprojekt/workers/DownloadWorker.java

@@ -85,13 +85,8 @@ public class DownloadWorker extends Worker {
                 List folders =  MailFunctions.listMailboxes(MailFunctions.getIMAPConnection(mImapHost,
                 List folders =  MailFunctions.listMailboxes(MailFunctions.getIMAPConnection(mImapHost,
                         mUser, mPassword, mImapPort));
                         mUser, mPassword, mImapPort));
 
 
-                /*deletes all folders that were clicked*/
-                if (mEmailViewModel.getAll(false).size() > 0) {
-                    for (int delete = 0; delete < mEmailViewModel.getAll(false).size(); delete++) {
-                        mEmailViewModel.deleteMessage(mEmailViewModel.getAll(false).get(delete));
-                    }
-                }
-                mEmailViewModel.getAll(true);
+
+                //mEmailViewModel.getAll(true);
 
 
                 for (int i = 0; i < folders.size(); i++) {
                 for (int i = 0; i < folders.size(); i++) {
                     String folderName;
                     String folderName;
@@ -112,7 +107,7 @@ public class DownloadWorker extends Worker {
                             folderNow.equals("DRAFTS") || folderNow.equals("Entw&APw-rfe")  )  {
                             folderNow.equals("DRAFTS") || folderNow.equals("Entw&APw-rfe")  )  {
                         folderName = "Draft";
                         folderName = "Draft";
                     } else if (folderNow.equals("Spam") || folderNow.equals("SPAM") || folderNow.equals("Bulk Mail")  ||
                     } else if (folderNow.equals("Spam") || folderNow.equals("SPAM") || folderNow.equals("Bulk Mail")  ||
-                            folderNow.equals("bulk mail")){
+                            folderNow.equals("bulk mail") || folderNow.equals("Spamverdacht")){
                         folderName = "Spam";
                         folderName = "Spam";
                     }
                     }
                     else {
                     else {
@@ -133,7 +128,8 @@ public class DownloadWorker extends Worker {
                     ArrayList<Message> messages = gson.fromJson(fetchedMails, messageType);
                     ArrayList<Message> messages = gson.fromJson(fetchedMails, messageType);
                     for (int k = 0; k < messages.size(); k++) {
                     for (int k = 0; k < messages.size(); k++) {
                         Message message = messages.get(k);
                         Message message = messages.get(k);
-                        //System.out.println("oldDate: " + message.getDate());
+                        message.putUser(currentUser);
+                        System.out.println("oldDate: " + message.getDate());
                         //SimpleDateFormat rawDate = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
                         //SimpleDateFormat rawDate = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
                         //SimpleDateFormat date = new SimpleDateFormat("dd.MM.yy");
                         //SimpleDateFormat date = new SimpleDateFormat("dd.MM.yy");
                         //Date middleDate = rawDate.parse(message.getDate());
                         //Date middleDate = rawDate.parse(message.getDate());

+ 2 - 2
app/src/main/res/layout/account_manager.xml

@@ -49,7 +49,7 @@
         android:id="@+id/deleteAccountButton"
         android:id="@+id/deleteAccountButton"
         android:layout_width="wrap_content"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        android:text="delete account"
+        android:text="@string/text_delete_account"
         android:layout_marginTop="16dp"
         android:layout_marginTop="16dp"
         android:layout_marginBottom="16dp"
         android:layout_marginBottom="16dp"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
@@ -60,7 +60,7 @@
         android:id="@+id/switchToAccountButton"
         android:id="@+id/switchToAccountButton"
         android:layout_width="wrap_content"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        android:text="switch to account"
+        android:text="@string/text_switch_account"
         android:layout_marginTop="16dp"
         android:layout_marginTop="16dp"
         android:layout_marginBottom="16dp"
         android:layout_marginBottom="16dp"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintEnd_toEndOf="parent"

+ 3 - 0
app/src/main/res/values/strings.xml

@@ -49,6 +49,9 @@
     <string name="text_create_message">Create Message</string>
     <string name="text_create_message">Create Message</string>
     <string name="text_ok">Okay</string>
     <string name="text_ok">Okay</string>
 
 
+    <string name="text_delete_account">Delete selected account</string>
+    <string name="text_switch_account">Switch to selected account</string>
+
     <string name="text_welcome">
     <string name="text_welcome">
         Hello friendly user. \n
         Hello friendly user. \n
         When creating an account,
         When creating an account,