From 91a7464bced3928ed36ed7a6a685f50adf3e1f58 Mon Sep 17 00:00:00 2001 From: Amine Date: Sun, 11 Nov 2018 12:23:59 +0100 Subject: [PATCH] Added experimental settings with a custom timeout setting. --- .../bou/readerforselfoss/AddSourceActivity.kt | 1 + .../bou/readerforselfoss/HomeActivity.kt | 1 + .../bou/readerforselfoss/LoginActivity.kt | 1 + .../bou/readerforselfoss/ReaderActivity.kt | 1 + .../bou/readerforselfoss/SourcesActivity.kt | 1 + .../api/selfoss/SelfossApi.kt | 15 +++++++++++-- .../readerforselfoss/background/background.kt | 4 ++-- .../fragments/ArticleFragment.kt | 1 + .../settings/SettingsActivity.java | 21 ++++++++++++++++++ .../main/res/drawable-hdpi/ic_action_lab.png | Bin 0 -> 683 bytes .../main/res/drawable-mdpi/ic_action_lab.png | Bin 0 -> 409 bytes .../main/res/drawable-xhdpi/ic_action_lab.png | Bin 0 -> 871 bytes .../res/drawable-xxhdpi/ic_action_lab.png | Bin 0 -> 1308 bytes .../res/drawable-xxxhdpi/ic_action_lab.png | Bin 0 -> 3275 bytes app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/pref_experimental.xml | 9 ++++++++ app/src/main/res/xml/pref_headers.xml | 5 +++++ build.sh | 4 +++- 18 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_action_lab.png create mode 100644 app/src/main/res/drawable-mdpi/ic_action_lab.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_action_lab.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_action_lab.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_action_lab.png create mode 100644 app/src/main/res/xml/pref_experimental.xml diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/AddSourceActivity.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/AddSourceActivity.kt index 8c2758d..67ef24e 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/AddSourceActivity.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/AddSourceActivity.kt @@ -89,6 +89,7 @@ class AddSourceActivity : AppCompatActivity() { this, this@AddSourceActivity, prefs.getBoolean("isSelfSignedCert", false), + prefs.getString("api_timeout", "-1").toLong(), prefs.getBoolean("should_log_everything", false) ) } catch (e: IllegalArgumentException) { diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt index 68eb0f4..27ade30 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt @@ -195,6 +195,7 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener { this, this@HomeActivity, settings.getBoolean("isSelfSignedCert", false), + sharedPref.getString("api_timeout", "-1").toLong(), shouldLogEverything ) items = ArrayList() diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/LoginActivity.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/LoginActivity.kt index c79effa..2cb8772 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/LoginActivity.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/LoginActivity.kt @@ -195,6 +195,7 @@ class LoginActivity : AppCompatActivity() { this, this@LoginActivity, isWithSelfSignedCert, + -1L, isWithSelfSignedCert ) diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/ReaderActivity.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/ReaderActivity.kt index d76bfee..84f5569 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/ReaderActivity.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/ReaderActivity.kt @@ -95,6 +95,7 @@ class ReaderActivity : AppCompatActivity() { this, this@ReaderActivity, prefs.getBoolean("isSelfSignedCert", false), + prefs.getString("api_timeout", "-1").toLong(), prefs.getBoolean("should_log_everything", false) ) diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/SourcesActivity.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/SourcesActivity.kt index 907f3ab..2c13460 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/SourcesActivity.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/SourcesActivity.kt @@ -60,6 +60,7 @@ class SourcesActivity : AppCompatActivity() { this, this@SourcesActivity, prefs.getBoolean("isSelfSignedCert", false), + prefs.getString("api_timeout", "-1").toLong(), prefs.getBoolean("should_log_everything", false) ) var items: ArrayList = ArrayList() diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossApi.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossApi.kt index 59c2a86..7c325e4 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossApi.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossApi.kt @@ -18,11 +18,13 @@ import retrofit2.Call import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import java.util.concurrent.ConcurrentHashMap +import java.util.concurrent.TimeUnit class SelfossApi( c: Context, callingActivity: Activity?, isWithSelfSignedCert: Boolean, + timeout: Long, shouldLog: Boolean ) { @@ -38,16 +40,25 @@ class SelfossApi( this } + fun OkHttpClient.Builder.maybeWithSettingsTimeout(timeout: Long): OkHttpClient.Builder = + if (timeout != -1L) { + this.readTimeout(timeout, TimeUnit.SECONDS) + .connectTimeout(timeout, TimeUnit.SECONDS) + } else { + this + } + fun Credentials.createAuthenticator(): DispatchingAuthenticator = DispatchingAuthenticator.Builder() .with("digest", DigestAuthenticator(this)) .with("basic", BasicAuthenticator(this)) .build() - fun DispatchingAuthenticator.getHttpClien(isWithSelfSignedCert: Boolean): OkHttpClient.Builder { + fun DispatchingAuthenticator.getHttpClien(isWithSelfSignedCert: Boolean, timeout: Long): OkHttpClient.Builder { val authCache = ConcurrentHashMap() return OkHttpClient .Builder() + .maybeWithSettingsTimeout(timeout) .maybeWithSelfSigned(isWithSelfSignedCert) .authenticator(CachingAuthenticatorDecorator(this, authCache)) .addInterceptor(AuthenticationCacheInterceptor(authCache)) @@ -78,7 +89,7 @@ class SelfossApi( HttpLoggingInterceptor.Level.NONE } - val httpClient = authenticator.getHttpClien(isWithSelfSignedCert) + val httpClient = authenticator.getHttpClien(isWithSelfSignedCert, timeout) httpClient.addInterceptor(logging) diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/background/background.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/background/background.kt index daf3ab6..59306aa 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/background/background.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/background/background.kt @@ -53,7 +53,6 @@ class LoadingWorker(val context: Context, params: WorkerParameters) : Worker(con val settings = this.context.getSharedPreferences(Config.settingsName, Context.MODE_PRIVATE) val sharedPref = PreferenceManager.getDefaultSharedPreferences(this.context) - val shouldLogEverything = sharedPref.getBoolean("should_log_everything", false) val notifyNewItems = sharedPref.getBoolean("notify_new_items", false) db = Room.databaseBuilder( @@ -65,7 +64,8 @@ class LoadingWorker(val context: Context, params: WorkerParameters) : Worker(con this.context, null, settings.getBoolean("isSelfSignedCert", false), - shouldLogEverything + sharedPref.getString("api_timeout", "-1").toLong(), + sharedPref.getBoolean("should_log_everything", false) ) api.allItems().enqueue(object : Callback> { diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/fragments/ArticleFragment.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/fragments/ArticleFragment.kt index e8b7a65..021ac35 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/fragments/ArticleFragment.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/fragments/ArticleFragment.kt @@ -114,6 +114,7 @@ class ArticleFragment : Fragment() { context!!, activity!!, settings.getBoolean("isSelfSignedCert", false), + prefs.getString("api_timeout", "-1").toLong(), prefs.getBoolean("should_log_everything", false) ) diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/settings/SettingsActivity.java b/app/src/main/java/apps/amine/bou/readerforselfoss/settings/SettingsActivity.java index 69e8f48..3d95aa4 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/settings/SettingsActivity.java +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/settings/SettingsActivity.java @@ -136,6 +136,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity { || GeneralPreferenceFragment.class.getName().equals(fragmentName) || ArticleViewerPreferenceFragment.class.getName().equals(fragmentName) || OfflinePreferenceFragment.class.getName().equals(fragmentName) + || ExperimentalPreferenceFragment.class.getName().equals(fragmentName) || DebugPreferenceFragment.class.getName().equals(fragmentName) || LinksPreferenceFragment.class.getName().equals(fragmentName) || ThemePreferenceFragment.class.getName().equals(fragmentName); @@ -384,6 +385,26 @@ public class SettingsActivity extends AppCompatPreferenceActivity { } } + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public static class ExperimentalPreferenceFragment extends PreferenceFragment { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.pref_experimental); + setHasOptionsMenu(true); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + int id = item.getItemId(); + if (id == android.R.id.home) { + getActivity().finish(); + return true; + } + return super.onOptionsItemSelected(item); + } + } + @Override public boolean onOptionsItemSelected(MenuItem item) { diff --git a/app/src/main/res/drawable-hdpi/ic_action_lab.png b/app/src/main/res/drawable-hdpi/ic_action_lab.png new file mode 100644 index 0000000000000000000000000000000000000000..32e2f1cdec7c0a516060f7522abb313c7345bb66 GIT binary patch literal 683 zcmV;c0#yBpP) zr2x`%umP^YCK$3tK;Aky1(zTTeuHz+WQ)K!kb`mNN130rMc@?!e$V_{=HC_7djc9v z6sQ9~z%AGVH{c93f+`UKhm?|YyP(IkA8{8*f?ps7dRaclz>5))K@*43YIWSfR*}pS zNPuDRg=Jq&=|YX{CX;&PL7HNqN1#TP_om42E!Iu zV;~=76asmf$awCh>hDk0H4`k)dofp35_~Nut?#OApR=({ZjZq?273V(z?N#Q#n68P zNXraHy2}iYH`MulaB{~ev;&$=5ad$Gb*8}&=xPM`T!1g`ZA>j6WBoGNi0+GN27Ld>7QU&yzC=EKmVi_o~g>l?uAx3h!}P z$y(aYgQrVfK9<3BAOfQ-=&4sPPo#qZ+>5QG$mZh=m&6$dvrm#!83^E?lZ zB}j-d@4f`I7k)!>&wKaqa`Rr|D5abMS4jac=i?741Kv` z5(cth#^P%}jv5$&4fq5vwtFDUl_>Fg4!*%V_yRwdtcFno@>(bA%s+q~coR1e)PSH2 z_TZJ8N9LYv7zk`Y#0S^{5B%yLvC;!U4aoa!M3CK;D8`#~ciuhlTX^r>J9B<>$2o6iJm2@dYQ}Q{ zqS%S&9Rq_P1NuR#Y6KvzfGyxNUV_t!7l1egzOuwW3kj*D3%F0o{s!m3e!2{_g#M%p zcut8fvbGfXPVJeb3z()vKZ3*5cAl+(!GJN1;0)N81OXSoHj}VOmxKCy6C9=OYQa6Q z!Q^}bIdH=EyTDy0LGuOlQU6J>D*8D}T#xN_Ko58b@^q$~S>H2}usZW^McX^QS`t+W zBCfI|e}bFfkh=cCCGdvzPuloDVAl!|@qi`xBw+jv*8j>X0mW2+h!?EyV!#{+!4K*$ zfCE+t2&e%4pb8L?W$l@OdCs!__tvZcRskx8K?8U!D?r3;)~2raS~1To>wjvK09^sD zv9<a=>o!eo!$B1w;`%N%faZ}^b%3Y{tQ1XM$DsOwca}C%_3vpnx#9 zbpo6KC%_4C0-OLRzzJ{y41Y7!&63(KVtf7!p*slzmRUjzMQp#owqLgWfk-bu`=GOk zF`Z%+^x7<7g(Wgy!nk=hZpBIghyii-+e;YRE>^*SZBK=3#4GPy8FS>=_|?67GQ3v; zhS-e1#|IthwE0n97T+Xv!AYDuC!PMBSs6LZ+-Z8 zK64?=ImhPPkS|b86EMmS_77+cVa`^XOV2xMqyR)6_`nWyHpIF4YjU-ZIuiwqiL>7l z;@mA_6^t1r08vk0cli;a_Em3^fbj^E*Nht>fIe;g7J~q_&qfmjOvI49W+GMrh$i}q zBQ61I-%W7}n29lY%}gu;s6Z(gAfQl5!R3YYLnUsqkqSU`1bhG$C+b)_q7;xfD0xjj x5&?)V1C!TuMIm6xU;#_+GdU-~32*{R;U5^*V*zs-&`AIQ002ovPDHLkV1l@`f9?PP literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_lab.png b/app/src/main/res/drawable-xxhdpi/ic_action_lab.png new file mode 100644 index 0000000000000000000000000000000000000000..8dcac57d118c862efb91af6371d4950dabb13978 GIT binary patch literal 1308 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 new items loaded. Notify on new items synced. Offline + Api Timeout + Experimental diff --git a/app/src/main/res/xml/pref_experimental.xml b/app/src/main/res/xml/pref_experimental.xml new file mode 100644 index 0000000..aa43f30 --- /dev/null +++ b/app/src/main/res/xml/pref_experimental.xml @@ -0,0 +1,9 @@ + + + + diff --git a/app/src/main/res/xml/pref_headers.xml b/app/src/main/res/xml/pref_headers.xml index 62fa491..7b766cb 100644 --- a/app/src/main/res/xml/pref_headers.xml +++ b/app/src/main/res/xml/pref_headers.xml @@ -32,4 +32,9 @@ android:icon="@drawable/ic_info_black_24" android:title="@string/pref_header_links"/> +
+ diff --git a/build.sh b/build.sh index b85d838..0304611 100755 --- a/build.sh +++ b/build.sh @@ -5,7 +5,9 @@ TODAYS_VERSION="1" VERSION="${BASE_VERSION//./}$(date '+%y%m%j')$TODAYS_VERSION" -./version.sh ${VERSION} $1 +PARAMS_EXCEPT_PUBLISH=$(echo $1 | sed 's/\-\-publish//') + +./version.sh ${VERSION} ${PARAMS_EXCEPT_PUBLISH} if [[ "$@" == *'--publish'* ]] then