From c0f0d1bad3441ed5e74c89741e6683ae004768fd Mon Sep 17 00:00:00 2001 From: chrisf-xp Date: Tue, 10 Oct 2017 10:01:37 +0200 Subject: [PATCH 1/5] Login-fields for url and and e-mail now prefilled with information from preferences if available. --- .../mattermost/MattermostPreference.java | 9 +++++++++ .../mattermost/rxtest/LoginRxActivity.java | 15 +++++++++++++++ .../mattermost/rxtest/LoginRxPresenter.java | 3 ++- .../mattermost/rxtest/MainRxActivity.java | 14 ++++++++++++++ 4 files changed, 40 insertions(+), 1 deletion(-) 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/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); } From 653a1be3abca59e554946c554ef1c23b10b289cf Mon Sep 17 00:00:00 2001 From: chrisf-xp Date: Tue, 10 Oct 2017 10:02:06 +0200 Subject: [PATCH 2/5] session expired bug, now re-login on error. --- .../mattermost/rxtest/GeneralRxPresenter.java | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) 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..f378220e 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); + } 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 From 52227a55bf6f258773db6ff177a8601ecbd6f1f7 Mon Sep 17 00:00:00 2001 From: chrisf-xp Date: Tue, 10 Oct 2017 10:53:11 +0200 Subject: [PATCH 3/5] comment / test-commit --- .../com/kilogramm/mattermost/rxtest/GeneralRxPresenter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 f378220e..6e4c5ffa 100644 --- a/app/src/main/java/com/kilogramm/mattermost/rxtest/GeneralRxPresenter.java +++ b/app/src/main/java/com/kilogramm/mattermost/rxtest/GeneralRxPresenter.java @@ -366,7 +366,7 @@ private void handleErrorLogin(Throwable e) { private void relogIfDirectProfileFailed(Throwable throwable) { if (throwable.getMessage().toLowerCase().contains("unauthorized")) { try { - Thread.sleep(1500); + 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()); } From c7e893680c0ebb58c30127e7816749f3e09cba83 Mon Sep 17 00:00:00 2001 From: chrisf-xp Date: Thu, 9 Nov 2017 15:35:15 +0100 Subject: [PATCH 4/5] changed shwoImageOnFail() to png to work with versions under 5 --- app/src/main/ic_error_red_new-web.png | Bin 0 -> 26870 bytes .../view/viewPhoto/PhotoViewFragment.java | 2 +- .../main/res/drawable-hdpi/ic_error_red_new.png | Bin 0 -> 806 bytes .../main/res/drawable-mdpi/ic_error_red_new.png | Bin 0 -> 513 bytes .../res/drawable-xhdpi/ic_error_red_new.png | Bin 0 -> 962 bytes .../res/drawable-xxhdpi/ic_error_red_new.png | Bin 0 -> 1576 bytes 6 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 app/src/main/ic_error_red_new-web.png create mode 100644 app/src/main/res/drawable-hdpi/ic_error_red_new.png create mode 100644 app/src/main/res/drawable-mdpi/ic_error_red_new.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_error_red_new.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_error_red_new.png 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 0000000000000000000000000000000000000000..9f8bbc9bcdb2fa7c21845117f1c5a5010683c2c1 GIT binary patch literal 26870 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

1Jr!Fmy!(aC{Hcf*EX3YQoRyJ$Q1)Z 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..632c91c3408292af52ff4fd1b5389a179442e585 GIT binary patch literal 513 zcmV+c0{;DpP)kqTN)sBzk@IPqwv@=qn&BQjT8zm?EXIJ{8kf=}LHb?Cz$B_^0T+4S~g!n%&Io?kxM@K?!Bq@0*$TYrZWMa?35Z+;Y=zzZg5= zGG@7)Pr8Urm&2UHdCTF}0{z|ljoo$t>OX}j84vhRp)f{(J!Fqvge3{G<8s^?&Y|OR zwkZ9PgIJT#DjEZvR?lnT9f!l(@PH3@2jP<=V5U1hemu3ncdON-a!WsuFTAA+_yIfP z8y%IMo9sxcz<1HQ?r_}D2mBuwur7(XnvPW$>_u$A2Z+FDiR}ijRy!xR2tDV%5@?s-ErpA#PDB0ZH)sn7aBf!rJGtv6_ zR%^^}I!q@(w$hR233~usTfq_|0X-717QW;~e3BIcXtER~`Y&gQfW=VY_Zd5_wPuf* z0Gcs|8nikMCbC6WI@AbXy<7{INC z;Rz5~B!IW_BQSIs%;BNVmyyrEPb36gci;^f1g&Y~CP4pnJ{cknT8+#Rz?e1s4e#ap znQRdN9nvR+Ylb-cm>B{PmcqBg9G+%{01|0LAfRq%CJlx;|G|-%t~>u&M`9e-NUjrU zF1QEQJ<|ywxlZ({uw6MNBj|U73D_E0aptSM3?+axOG;EU!dtcA zaf2j0YOcl`aLcsRN5Us~IB37-Se;iT~6JV9pYY8dC%cUf< z0|~cCy_WQM0Y$$~P+lw@+TXWHxRt)|1pKmDXMmJ}PQYxczZ>uyD8#1HR$9P1$#qDx zWXzW%G*6(RN^i0hVZ0__nM4|-RH0`TOgDefO4DYvru};d#Cf`b@~`3OB8Ij$;uKxY klRlx4TW-1KmYaV23(#ev6aJ+;OaK4?07*qoM6N<$f(-Y@yZ`_I literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a5fc0b11bcc156c90cbf10cadb1360b746937a99 GIT binary patch literal 1576 zcmV+@2G{wCP)sO$j1uC<-ma2NC)#NG*K`lD?!A3Vmt&(uyG1 zO22Gr3X&9BtJN3#k-SthvnvtAza-w@?6eWH*(5V}_TD>l4qOPkA({D|d(ZbdHwcJ` zh=_=Yh=_=Yh*qPkV`EP*jE-)cW2}EcZQF#E{H#C2cZ85Z0=P{TvOk2_-<0fdEZFH- zigU5xmt)DMV##OpnofS!pG8W18w+tNR{T&b<-VA)Fxs)>1wwKifJch$js!c{lKi`- z((7(U)oY5-!Z zvcT(|xB+6KDcFS~LGQ{8#m{T;wO8wqXDb7IYy0*WTS9!?mfyVveWevi{zJ1S_CFdJ zc)rxuOWY89^p5-9#*SZo@!3daUS^PC*oGK#z(vb9`dv$*cbX`?)eA)6DIr?*TiRYAF_V0!2f6G&X={* zbjDxcmoefbd=x*doS~uD+KRR;;HPG*HkX~(3-k4Gn^t1i%Le|^(i>}V@J*L@{#1Fv zUt)rDCjm0QDaFoY4sgZs~_QTNUvCtC*dzj*>8O<-kvuHc{=$eGz`3cf$S3 zGC=zY)|@pcT`l*2sxJ6T9&^u?G6HKY$xjgYX*5-^qdg7awPg5?oxmERsQi~$@VgzC zpv?~4pQPdu#4b>(M{xv)1pST?{_C{06Eu9t|!ASC-?c@~1#h&C7wAJ&8O?iui z&dSdwx7drk@>wKxirxLAqZkqGr#~oK@7<36(7n4{$ddH=@miSt#w32~bkkUb`ptAZ{G!YTeEF(C8v&g5bM zi6F}&h?KBpCG46Rn&_ipwl!&W?XcPMH6POuKfC^b|2B7qsz|5wvjI}Y@ zD#rDBVcwCsf?OfKBv9AgGjPycQeKF63Dk8?UQukfxvIE&eX|=uIZr%c#cvvKV~rI% zMhsZ90-i8l8;VLVV!#^359fpC%hMU_w{H!3P#rDU1q>oAVSADS4YKGay#vI6&axlVAPeu3OnU`x*vbbyQtI`;ckOzq)B0VAw`{ekqJX*E<}iE; z!uM?rTXiuXko?bv*weF4d9CH2!MGOkc%OtFj`w_WJJNs2*Z>MU+(DW&ut8Cce}p*+ z6=uLa%tZ}s(P9uhRpm%2=As6+DXks)rg97r?2I$RzW-$G6A_e0I;MpMF4BThZzvGAi*=Nks9yUC z{64DNyuEn|enR4`dFU~t$QN@_gECO67f!l)cT9(QKa!vDM&7R{fR{#5Z#WG8HB5#n z^_7V2N$c!@YpqX6w_+q`P!&RY6EAHw(J%NF3?i)bje4lINJ?H5J63%0S2B6`7RIk( z2A+49^AxVE>-EhjgM|5N?qmS;L zG(|a`es&47El`;T@rF@5NYoRO=KP92G!8z#%o)2G>+z+|_zu5AND&bc5fKp)5fKq} arGEkC1AIW_S1%v{0000 Date: Thu, 9 Nov 2017 16:01:54 +0100 Subject: [PATCH 5/5] fixed a bug where picture preview couldn't be correctly loaded because of an in-code assumed BaseUrl of the server. --- .../mattermost/view/viewPhoto/PhotoViewFragment.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 d639556a..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 @@ -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";