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 0000000..32e2f1c Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_action_lab.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_lab.png b/app/src/main/res/drawable-mdpi/ic_action_lab.png new file mode 100644 index 0000000..8454a72 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_action_lab.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_action_lab.png b/app/src/main/res/drawable-xhdpi/ic_action_lab.png new file mode 100644 index 0000000..ce1ff52 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_action_lab.png differ 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 0000000..8dcac57 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_action_lab.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_action_lab.png b/app/src/main/res/drawable-xxxhdpi/ic_action_lab.png new file mode 100644 index 0000000..03c6556 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_action_lab.png differ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fefbad3..650e77b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -166,4 +166,6 @@ %1$d 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