diff --git a/app/src/main/ic_error_red_new-web.png b/app/src/main/ic_error_red_new-web.png new file mode 100644 index 00000000..9f8bbc9b Binary files /dev/null and b/app/src/main/ic_error_red_new-web.png differ diff --git a/app/src/main/java/com/kilogramm/mattermost/MattermostPreference.java b/app/src/main/java/com/kilogramm/mattermost/MattermostPreference.java index 325ba6b7..10efb70f 100644 --- a/app/src/main/java/com/kilogramm/mattermost/MattermostPreference.java +++ b/app/src/main/java/com/kilogramm/mattermost/MattermostPreference.java @@ -30,6 +30,7 @@ public class MattermostPreference { private static final String LAST_CHANNEL_ID = "last_channel_id"; private static final String TEAM_ID = "team_id"; private static final String SITE_NAME = "site_name"; + private static final String MY_E_MAIL = "my_e_mail"; public MattermostPreference(Context context) { sharedPreferences = context.getSharedPreferences(PREFERENCES, Context.MODE_PRIVATE); @@ -42,6 +43,14 @@ public static synchronized MattermostPreference createInstance(Context context) return instance; } + public String getMyEMail() { + return sharedPreferences.getString(MY_E_MAIL, null); + } + + public void setMyEMail(String email) { + sharedPreferences.edit().putString(MY_E_MAIL, email).apply(); + } + public String getSiteName(){ return sharedPreferences.getString(SITE_NAME,null); } diff --git a/app/src/main/java/com/kilogramm/mattermost/rxtest/GeneralRxPresenter.java b/app/src/main/java/com/kilogramm/mattermost/rxtest/GeneralRxPresenter.java index e5cfd9a2..6e4c5ffa 100644 --- a/app/src/main/java/com/kilogramm/mattermost/rxtest/GeneralRxPresenter.java +++ b/app/src/main/java/com/kilogramm/mattermost/rxtest/GeneralRxPresenter.java @@ -8,7 +8,6 @@ import com.google.gson.Gson; import com.kilogramm.mattermost.MattermostApp; import com.kilogramm.mattermost.MattermostPreference; -import com.kilogramm.mattermost.model.entity.ClientCfg; import com.kilogramm.mattermost.model.entity.InitObject; import com.kilogramm.mattermost.model.entity.LicenseCfg; import com.kilogramm.mattermost.model.entity.Preference.PreferenceRepository; @@ -130,7 +129,10 @@ private void initRequest() { users.add(new User("materMostChannel", "channel", "Notifies everyone in the channel")); requestLoadChannels(); - }, (generalRxActivity1, throwable) -> sendShowError(parceError(throwable, null)));// TODO: 18.01.17 entry point + }, (generalRxActivity1, throwable) -> { + sendShowError(parceError(throwable, null)); + relogIfDirectProfileFailed(throwable); // simple logout on error #bugfix + } );// TODO: 18.01.17 entry point restartableFirst(REQUEST_LOAD_CHANNELS, () -> ServerMethod.getInstance() @@ -355,4 +357,33 @@ private void handleErrorLogin(Throwable e) { e.printStackTrace(); } } + + /** Give it a throwable (error) from onError() or smth and it gives brings you the login menu + * if the error.getMessage() contains "Unauthorized" + * + * @param throwable a throwable wich should contain "Unauthorized" in its Message + */ + private void relogIfDirectProfileFailed(Throwable throwable) { + if (throwable.getMessage().toLowerCase().contains("unauthorized")) { + try { + Thread.sleep(1500); // waiting to show error msg, seems more clear for users / adjust at will + } catch (Exception e) { + Log.d(TAG + "Sleep", e.getMessage()); + } + relog(); + } + } + + /** Brings you to the MainRxActivity, while clearing the Preferences (old login data) + * + */ + private void relog() { + try { + //MattermostApp.clearPreference(); + MattermostPreference.getInstance().setAuthToken(null); + MattermostApp.showMainRxActivity(); + } catch (Exception e) { + Log.d(TAG + "Relog", e.getMessage()); + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/kilogramm/mattermost/rxtest/LoginRxActivity.java b/app/src/main/java/com/kilogramm/mattermost/rxtest/LoginRxActivity.java index b4eec361..3534071b 100644 --- a/app/src/main/java/com/kilogramm/mattermost/rxtest/LoginRxActivity.java +++ b/app/src/main/java/com/kilogramm/mattermost/rxtest/LoginRxActivity.java @@ -6,6 +6,7 @@ import android.os.Bundle; import android.view.MenuItem; +import com.kilogramm.mattermost.MattermostPreference; import com.kilogramm.mattermost.R; import com.kilogramm.mattermost.databinding.ActivityRxLoginBinding; import com.kilogramm.mattermost.view.BaseActivity; @@ -27,6 +28,7 @@ protected void onCreate(Bundle savedInstanceState) { binding = DataBindingUtil.setContentView(this, R.layout.activity_rx_login); binding.setLoginPresenter(getPresenter()); setupToolbar("Sign In", true); + initView(); } @Override @@ -68,4 +70,17 @@ public boolean onOptionsItemSelected(MenuItem item) { public void hideKeyboard() { hideKeyboard(this); } + + /* initialize view for eMail from preferences + */ + private void initView(){ + String eMailFromPreferences = MattermostPreference.getInstance().getMyEMail(); + if (eMailFromPreferences != null && getPresenter().isValidEmail(eMailFromPreferences)){ + binding.editEmail.setText(eMailFromPreferences); + binding.editPassword.requestFocus(); + //Editable emailText = binding.editPassword.getText(); + //Selection.setSelection(emailText, 0); + getPresenter().mEditEmail = eMailFromPreferences; + } + } } diff --git a/app/src/main/java/com/kilogramm/mattermost/rxtest/LoginRxPresenter.java b/app/src/main/java/com/kilogramm/mattermost/rxtest/LoginRxPresenter.java index e075e3f7..7ab895b4 100644 --- a/app/src/main/java/com/kilogramm/mattermost/rxtest/LoginRxPresenter.java +++ b/app/src/main/java/com/kilogramm/mattermost/rxtest/LoginRxPresenter.java @@ -91,7 +91,7 @@ private boolean canClickSignIn() { return mEditEmail.length() != 0 && mEditPassword.length() != 0 && isValidEmail(mEditEmail); } - private boolean isValidEmail(String email) { + public boolean isValidEmail(String email) { //is now public to use, just checks a string Pattern p = Patterns.EMAIL_ADDRESS; Matcher m = p.matcher(email); return m.matches(); @@ -198,6 +198,7 @@ private void initRequestLogin() { .observeOn(AndroidSchedulers.mainThread()); }, (loginRxActivity, user) -> { MattermostPreference.getInstance().setMyUserId(user.getId()); + MattermostPreference.getInstance().setMyEMail(user.getEmail()); realm.executeTransaction(realm1 -> realm1.copyToRealmOrUpdate(user)); requestInitLoad(); }, (loginRxActivity1, throwable) -> { diff --git a/app/src/main/java/com/kilogramm/mattermost/rxtest/MainRxActivity.java b/app/src/main/java/com/kilogramm/mattermost/rxtest/MainRxActivity.java index 2c6594dc..dd63e04f 100644 --- a/app/src/main/java/com/kilogramm/mattermost/rxtest/MainRxActivity.java +++ b/app/src/main/java/com/kilogramm/mattermost/rxtest/MainRxActivity.java @@ -9,6 +9,7 @@ import android.util.Log; import android.view.View; +import com.kilogramm.mattermost.MattermostPreference; import com.kilogramm.mattermost.R; import com.kilogramm.mattermost.databinding.ActivityMainBinding; import com.kilogramm.mattermost.service.MattermostService; @@ -43,6 +44,19 @@ private void initView() { getPresenter().request(getStringUrl()); hideKeyboard(); }); + + // get url from preferences + String urlFromPreferences = MattermostPreference.getInstance().getBaseUrl(); + if (urlFromPreferences != null){ + if (!urlFromPreferences.startsWith("https://") || !urlFromPreferences.startsWith("http://")){ + urlFromPreferences = "https://" + urlFromPreferences; + } + binding.urlEditText.setText(urlFromPreferences); + if (checkEnteredUrl(getStringUrl()) || (binding.urlEditText.getText().length() == 0)){ + setShowNextButton(true); + } + } + binding.urlEditText.addTextChangedListener(textWatcher); } diff --git a/app/src/main/java/com/kilogramm/mattermost/view/viewPhoto/PhotoViewFragment.java b/app/src/main/java/com/kilogramm/mattermost/view/viewPhoto/PhotoViewFragment.java index 263941c5..f9f8b346 100644 --- a/app/src/main/java/com/kilogramm/mattermost/view/viewPhoto/PhotoViewFragment.java +++ b/app/src/main/java/com/kilogramm/mattermost/view/viewPhoto/PhotoViewFragment.java @@ -72,7 +72,7 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { headers.put("Authorization", "Bearer " + MattermostPreference.getInstance().getAuthToken()); DisplayImageOptions options = new DisplayImageOptions.Builder() .imageScaleType(ImageScaleType.EXACTLY) - .showImageOnFail(R.drawable.ic_error_red_24dp) + .showImageOnFail(R.drawable.ic_error_red_new) .resetViewBeforeLoading(true) .cacheInMemory(true) .cacheOnDisk(true) @@ -80,7 +80,9 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { .considerExifParams(true) .build(); - String preview_url = "https://mattermost.kilograpp.com/api/v3/files/" + String preview_url = "https://" + + MattermostPreference.getInstance().getBaseUrl() + + "/api/v3/files/" + mFileInfo.getId() + "/get_preview"; diff --git a/app/src/main/res/drawable-hdpi/ic_error_red_new.png b/app/src/main/res/drawable-hdpi/ic_error_red_new.png new file mode 100644 index 00000000..e3513cae Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_error_red_new.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_error_red_new.png b/app/src/main/res/drawable-mdpi/ic_error_red_new.png new file mode 100644 index 00000000..632c91c3 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_error_red_new.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_error_red_new.png b/app/src/main/res/drawable-xhdpi/ic_error_red_new.png new file mode 100644 index 00000000..3ccb2b79 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_error_red_new.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_error_red_new.png b/app/src/main/res/drawable-xxhdpi/ic_error_red_new.png new file mode 100644 index 00000000..a5fc0b11 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_error_red_new.png differ