Simon Hammer 3 rokov pred
rodič
commit
37e62345ea

+ 16 - 28
app/src/main/java/com/noahvogt/snailmail/MainActivity.java

@@ -66,14 +66,12 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     private AppBarConfiguration mAppBarConfiguration;
 
     public static final int NEW_WORD_ACTIVITY_REQUEST_CODE = 1;
-    public static final String emailData = "Email";
-    public static final String passwordData = "Password";
-    public static final String nameData = "Name";
+
     public static EmailViewModel mEmailViewModel;
     public static RecyclerView recyclerView;
-    private Boolean clicked = false;
 
     public static String userGlobal;
+    public static boolean isDownloading = false;
 
     private AlertDialog dialog;
     private EditText newemail_name, newemail_email, newemail_password; /* may not be private */
@@ -84,23 +82,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     public MainActivity() {}
 
 
-    public String getVisibleFragment(){
-        FragmentManager fragmentManager = MainActivity.this.getSupportFragmentManager();
-        List<Fragment> fragments = fragmentManager.getFragments();
-        if(fragments != null){
-            showToast("not null");
-            for(Fragment fragment : fragments){
-                showToast(fragment.toString());
-                if(fragment.isVisible())
-                    showToast("found visible fragment");
-                    return "is gallery";
-            }
-        } else {
-            showToast("null");}
-            return null;
-
-    }
-
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -536,7 +517,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     public static MailServerCredentials newMailServerCredentials;
     public static SharedPreferences.Editor credentialsEditor;
 
-    public void addNewAccountCredentials(String name, String email, String password, int imapPort,
+    public boolean addNewAccountCredentials(String name, String email, String password, int imapPort,
                                          int smtpPort, String imapHost, String smtpHost, DialogInterface dialogContext,
                                          boolean wantConnectionFailedDialog, View headerView) {
         credentialsEditor = mailServerCredentials.edit();
@@ -579,15 +560,20 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                 showToast("Success: added new email account");
                 updateNavHeaderText(headerView);
                 dialogContext.dismiss();
+                return true;
             } else {
                 showToast("Error: cannot add the same email twice");
+                return false;
             }
         } else {
-            if (wantConnectionFailedDialog)
+            if (wantConnectionFailedDialog) {
                 askForChangeMailServerSettingsDialog(name, email, password, headerView);
-            else
+            } else {
                 showToast("Error: failed to get connection");
+                return false;
+            }
         }
+        return false;
     }
 
     /* use 'initialMail' variable so that the program knows which email entry is has to change */
@@ -662,11 +648,13 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                     return;
                 }
 
-                addNewAccountCredentials(name, email, password, 993, 587, MailFunctions.getImapHostFromEmail(email),
+                boolean connection = addNewAccountCredentials(name, email, password, 993, 587, MailFunctions.getImapHostFromEmail(email),
                         MailFunctions.getSmtpHostFromEmail(email), rootCreateNewEmailPopupDialog, true, headerView);
-                showToast("Downloading Messages");
-                mEmailViewModel.applyDownload();
-                userGlobal = email;
+                if (connection) {
+                    showToast("Downloading Messages");
+                    mEmailViewModel.applyDownload();
+                    userGlobal = email;
+                }
                 dialog.dismiss();
         }});
 

+ 1 - 20
app/src/main/java/com/noahvogt/snailmail/data/EmailViewHolder.java

@@ -48,8 +48,7 @@ public class EmailViewHolder extends RecyclerView.ViewHolder {
         subjectItemView = itemView.findViewById(R.id.subject);
         dateItemView = itemView.findViewById(R.id.date);
         messageItemView = itemView.findViewById(R.id.message);
-        System.out.println("Called EmailViewHolder");
-        
+
         itemView.setOnClickListener(new View.OnClickListener() {
 
             @Override
@@ -65,9 +64,6 @@ public class EmailViewHolder extends RecyclerView.ViewHolder {
     }
 
     public void bind(String from, String subject, String date, String message) {
-        System.out.println("length of from " + from.length());
-        System.out.println("length of message " + message.length());
-
 
         if (subject.length() > 30){
             subject = subject.substring(0,26) + "...";
@@ -100,21 +96,6 @@ public class EmailViewHolder extends RecyclerView.ViewHolder {
                 .inflate(R.layout.fragment_home, parent, false);
         return new EmailViewHolder(view, selectedMessage, messageList);
     }
-
-    public static boolean isDate(String date){
-        SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yy", Locale.getDefault());
-        //dateFormat.setLenient(false);
-        try {
-            dateFormat.parse(date);
-        } catch (ParseException e){
-            return false;
-        }
-
-        return true;
-    }
-
-
-
     }
 
 

+ 15 - 1
app/src/main/java/com/noahvogt/snailmail/data/EmailViewModel.java

@@ -24,6 +24,8 @@ import com.noahvogt.snailmail.workers.DownloadWorker;
 import java.util.ArrayList;
 import java.util.List;
 
+import static com.noahvogt.snailmail.MainActivity.userGlobal;
+
 public class EmailViewModel extends AndroidViewModel {
 
     private EmailRepository mEmailRepository;
@@ -64,10 +66,17 @@ public class EmailViewModel extends AndroidViewModel {
         mWorkManager.enqueue(downloadRequest);
     }
 
-    public void setListAll(List<Message> messageListAll, String fragment){
+    public void setListAll(List<Message> messageListAll, String fragment, Boolean  isDownloading){
+        /*if Messages being downloaded*/
+        if (isDownloading){return;}
+        if (userGlobal == null){return;}
         System.out.println("setListAll: size messageListAll input: " + messageListAll.size());
         System.out.println("setListAll: fragment: " + fragment);
         System.out.println("setListAll: variable inbox: " + inbox);
+        System.out.println("setListAll: variable sent: " + sent);
+        System.out.println("setListAll: variable drafts: " + drafts);
+        System.out.println("setListAll: variable archive: " + archive);
+        System.out.println("setListAll: variable spam: " + spam);
         if (sent == null && fragment.equals("Sent")){
             for (int i = 0; i < messageListAll.size(); i++) {
                 this.all.add(messageListAll.get(i));
@@ -112,6 +121,11 @@ public class EmailViewModel extends AndroidViewModel {
             List<Message> emptyAll;
             emptyAll = all;
             all.clear();
+            sent = null;
+            spam = null;
+            archive = null;
+            inbox = null;
+            drafts = null;
             System.out.println("Size cleared list:" + all.size());
             return emptyAll;
         }

+ 3 - 1
app/src/main/java/com/noahvogt/snailmail/ui/archive/ArchiveFragment.java

@@ -23,6 +23,8 @@ import com.noahvogt.snailmail.data.CustomAdapter;
 import com.noahvogt.snailmail.ui.show.MessageShowFragment;
 import com.noahvogt.snailmail.data.EmailViewModel;
 
+import static com.noahvogt.snailmail.MainActivity.isDownloading;
+
 public class ArchiveFragment extends Fragment implements CustomAdapter.SelectedMessage{
 
     private ArchiveViewModel archiveViewModel;
@@ -50,7 +52,7 @@ public class ArchiveFragment extends Fragment implements CustomAdapter.SelectedM
             /*get List of Message to show them onClick */
             adapter.getList(messages);
             /*gives list of messages to EmailViewModel */
-            MainActivity.mEmailViewModel.setListAll(messages, "Archive");
+            MainActivity.mEmailViewModel.setListAll(messages, "Archive", isDownloading);
         });
 
 

+ 4 - 1
app/src/main/java/com/noahvogt/snailmail/ui/gallery/GalleryFragment.java

@@ -27,6 +27,8 @@ import com.noahvogt.snailmail.data.EmailViewModel;
 
 import org.jetbrains.annotations.NotNull;
 
+import static com.noahvogt.snailmail.MainActivity.isDownloading;
+
 public class GalleryFragment extends Fragment implements CustomAdapter.SelectedMessage{
 
     EmailViewModel mEmailViewModel;
@@ -65,7 +67,8 @@ public class GalleryFragment extends Fragment implements CustomAdapter.SelectedM
             /*get List of Message to show them onClick */
             adapter.getList(messages);
             /*gives list of messages to EmailViewModel */
-            MainActivity.mEmailViewModel.setListAll(messages, "Sent");
+            MainActivity.mEmailViewModel.setListAll(messages, "Sent", isDownloading);
+            System.out.println("Gallery started");
         });
 
         return root;

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

@@ -28,6 +28,8 @@ import com.noahvogt.snailmail.data.EmailViewModel;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 
+import static com.noahvogt.snailmail.MainActivity.isDownloading;
+
 public class HomeFragment extends Fragment implements CustomAdapter.SelectedMessage{
 
     private HomeViewModel homeViewModel;
@@ -55,7 +57,7 @@ public class HomeFragment extends Fragment implements CustomAdapter.SelectedMess
             adapter.getList(messages);
             /*gives list of messages to EmailViewModel */
             System.out.println("HomeFragment List: "+messages);
-            MainActivity.mEmailViewModel.setListAll(messages, "Inbox");
+            MainActivity.mEmailViewModel.setListAll(messages, "Inbox", isDownloading);
             //mEmailViewModel.getAllMessages();
         });
 

+ 3 - 1
app/src/main/java/com/noahvogt/snailmail/ui/slideshow/DraftFragment.java

@@ -23,6 +23,8 @@ import com.noahvogt.snailmail.DataBase.Message;
 import com.noahvogt.snailmail.data.CustomAdapter;
 import com.noahvogt.snailmail.MessageCreateFragment;
 
+import static com.noahvogt.snailmail.MainActivity.isDownloading;
+
 public class  DraftFragment extends Fragment implements CustomAdapter.SelectedMessage{
 
    private DraftViewModel draftViewModel;
@@ -51,7 +53,7 @@ public class  DraftFragment extends Fragment implements CustomAdapter.SelectedMe
             /*get List of Message to show them onClick */
             adapter.getList(messages);
             /*gives list of messages to EmailViewModel */
-            MainActivity.mEmailViewModel.setListAll(messages, "Drafts");
+            MainActivity.mEmailViewModel.setListAll(messages, "Drafts", isDownloading);
 
         });
 

+ 3 - 1
app/src/main/java/com/noahvogt/snailmail/ui/spam/SpamFragment.java

@@ -23,6 +23,8 @@ import com.noahvogt.snailmail.data.CustomAdapter;
 import com.noahvogt.snailmail.ui.show.MessageShowFragment;
 import com.noahvogt.snailmail.data.EmailViewModel;
 
+import static com.noahvogt.snailmail.MainActivity.isDownloading;
+
 public class SpamFragment extends Fragment implements CustomAdapter.SelectedMessage{
 
     private SpamViewModel spamViewModel;
@@ -50,7 +52,7 @@ public class SpamFragment extends Fragment implements CustomAdapter.SelectedMess
             /*get List of Message to show them onClick */
             adapter.getList(messages);
             /*gives list of messages to EmailViewModel */
-            MainActivity.mEmailViewModel.setListAll(messages, "Spam");
+            MainActivity.mEmailViewModel.setListAll(messages, "Spam",isDownloading);
 
         });
 

+ 3 - 1
app/src/main/java/com/noahvogt/snailmail/workers/DownloadWorker.java

@@ -25,6 +25,7 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
+import static com.noahvogt.snailmail.MainActivity.isDownloading;
 import static com.noahvogt.snailmail.MainActivity.mEmailViewModel;
 
 public class DownloadWorker extends Worker {
@@ -46,6 +47,7 @@ public class DownloadWorker extends Worker {
     @Override
     public Result doWork() {
             try {
+                isDownloading = true;
                 String mUser = null;
                 String mPassword = null;
                 String mImapHost = null;
@@ -135,7 +137,7 @@ public class DownloadWorker extends Worker {
                     }
 
                 }
-
+                isDownloading = false;
                 return Result.success();
             } catch (Throwable throwable){
                 Log.e(TAG, "Error, downloading Messages", throwable);

+ 13 - 13
app/src/main/python/mailFunctions.py

@@ -51,11 +51,11 @@ def checkConnection(host, username, password, port):
         return True
     except Exception as e:
 
-        print("host: " + host)
-        print("username: " + username)
-        print("password: " + password)
-        print("port: " + str(port))
-        print(str(e))
+        #print("host: " + host)
+        #print("username: " + username)
+        #print("password: " + password)
+        #print("port: " + str(port))
+        #print(str(e))
 
         return False
 
@@ -99,13 +99,13 @@ def verifyNoBytes(messages, output_list):
             #print(item)
             #print(messages["{}".format(item)])
             if type(messages["{}".format(item)]) is not str:
-                print("ERROREXIT: .format failed")
-                print(messages["{}".format(item)])
-                print(type(messages["{}".format(item)]))
+                #print("ERROREXIT: .format failed")
+                #print(messages["{}".format(item)])
+                #print(type(messages["{}".format(item)]))
 
                 exit()
             if type(item) is not str:
-                print("ERROREXIT")
+                #print("ERROREXIT")
                 exit()
 
 
@@ -182,10 +182,10 @@ def fetchMails(connection, inbox, folderLocal):
             output_dict['date'] = stringCompiling(raw_date)
             output_dict['content'] = primitive_body
             output_dict['folder'] = folderLocal
-            print('FolderServer: ' + inbox)
-            print('FolderLocal: ' + folderLocal)
-            print('From: ' + stringCompiling(raw_from))
-            print('Outputdictionary: ' + str(output_dict))
+            #print('FolderServer: ' + inbox)
+            #print('FolderLocal: ' + folderLocal)
+            #print('From: ' + stringCompiling(raw_from))
+            #print('Outputdictionary: ' + str(output_dict))
 
             if seentype == '(SEEN)':
                 output_dict['seen'] = "True"