Compare commits
8 Commits
v171901027
...
v171904096
Author | SHA1 | Date | |
---|---|---|---|
1485cc05f4 | |||
d1dad3e61a | |||
e5024b0420 | |||
9b01692c55 | |||
33aa587d36 | |||
12e0766803 | |||
a8721ad7a4 | |||
bc5e882894 |
17
README.md
17
README.md
@ -1,20 +1,10 @@
|
||||
# ReaderForSelfoss
|
||||
# ReaderForSelfoss **(Only available from F-Droid)**
|
||||
|
||||
[](https://join.slack.com/t/readerforselfoss/shared_invite/enQtMjkyNzc3NjM2Mjc1LTUzZTZhOGM5YjQ1MTI5MWZiODRjMjE1ZDBmMzQxZmQ3NWZhYTNhMTBjNGEwNmE2ZGFjODU5NjUxZjBkMWJmMDQ) [](https://jenkins.amine-bou.fr/job/ReaderForSelfoss/) [](https://www.codetriage.com/aminecmi/readerforselfoss) [](https://crowdin.com/project/readerforselfoss)
|
||||
[](https://crowdin.com/project/readerforselfoss)
|
||||
|
||||
It's an RSS Reader for Android, that **only** works with [Selfoss](https://selfoss.aditu.de/)
|
||||
|
||||
<a href='https://play.google.com/store/apps/details?id=apps.amine.bou.readerforselfoss'><img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png' height="100"/></a> <a href="https://f-droid.org/packages/apps.amine.bou.readerforselfoss"><img src="https://f-droid.org/badge/get-it-on.png" alt="Get it on F-Droid" height="100"></a>
|
||||
|
||||
Also, the last APK built from source is available [here](https://jenkins.amine-bou.fr/job/ReaderForSelfoss/lastSuccessfulBuild/artifact/SignApksBuilder-out/selfoss-key/selfoss/app-githubConfig-release-unsigned.apk/app-githubConfig-release.apk).
|
||||
|
||||
## Join the alpha channel
|
||||
|
||||
**Keep in mind, it could be instable, but you'll have the new updates faster**
|
||||
|
||||
- First, join the google [group](https://groups.google.com/d/forum/reader-for-selfoss-alpha-testing).
|
||||
- Then, join the [alpha channel](https://play.google.com/apps/testing/apps.amine.bou.readerforselfoss) of the app.
|
||||
- You'll be able to update the app for the current alpha version.
|
||||
<a href="https://f-droid.org/packages/apps.amine.bou.readerforselfoss"><img src="https://f-droid.org/badge/get-it-on.png" alt="Get it on F-Droid" height="100"></a>
|
||||
|
||||
## Want to help ?
|
||||
|
||||
@ -30,4 +20,3 @@ Also, the last APK built from source is available [here](https://jenkins.amine-b
|
||||
- [See what I'm doing](https://github.com/aminecmi/ReaderforSelfoss/projects/1)
|
||||
- [Create an issue, or request a new feature](https://github.com/aminecmi/ReaderforSelfoss/issues)
|
||||
- [Help translation the app](https://crowdin.com/project/readerforselfoss)
|
||||
- [Ask for help](https://join.slack.com/t/readerforselfoss/shared_invite/enQtMjkyNzc3NjM2Mjc1LTUzZTZhOGM5YjQ1MTI5MWZiODRjMjE1ZDBmMzQxZmQ3NWZhYTNhMTBjNGEwNmE2ZGFjODU5NjUxZjBkMWJmMDQ)
|
||||
|
@ -72,9 +72,6 @@ android {
|
||||
'proguard-rules.pro'
|
||||
}
|
||||
debug {
|
||||
buildConfigField "String", "LOGIN_URL", appLoginUrl
|
||||
buildConfigField "String", "LOGIN_USERNAME", appLoginUsername
|
||||
buildConfigField "String", "LOGIN_PASSWORD", appLoginPassword
|
||||
}
|
||||
}
|
||||
flavorDimensions "build"
|
||||
@ -83,11 +80,6 @@ android {
|
||||
versionNameSuffix '-github'
|
||||
dimension "build"
|
||||
}
|
||||
storeConfig {
|
||||
// As jenkins publishes to alpha first, this is the default suffix now.
|
||||
versionNameSuffix '-store'
|
||||
dimension "build"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -102,14 +94,14 @@ dependencies {
|
||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
// Android Support
|
||||
implementation "androidx.appcompat:appcompat:$android_version"
|
||||
implementation "androidx.appcompat:appcompat:$androidx_version"
|
||||
implementation "com.google.android.material:material:$android_version"
|
||||
implementation "androidx.recyclerview:recyclerview:$android_version"
|
||||
implementation "androidx.legacy:legacy-support-v4:$android_version"
|
||||
implementation "androidx.vectordrawable:vectordrawable:$android_version"
|
||||
implementation "androidx.browser:browser:$android_version"
|
||||
implementation "androidx.cardview:cardview:$android_version"
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha4'
|
||||
|
||||
//multidex
|
||||
implementation 'androidx.multidex:multidex:2.0.1'
|
||||
@ -134,9 +126,6 @@ dependencies {
|
||||
implementation 'com.github.bumptech.glide:glide:4.1.1'
|
||||
implementation 'com.github.bumptech.glide:okhttp3-integration:4.1.1'
|
||||
|
||||
// Asking politely users to rate the app
|
||||
implementation 'com.github.stkent:amplify:2.2.0'
|
||||
|
||||
// Drawer
|
||||
implementation 'co.zsmb:materialdrawer-kt:2.0.1'
|
||||
|
||||
@ -161,21 +150,4 @@ dependencies {
|
||||
kapt "androidx.room:room-compiler:$room_version"
|
||||
|
||||
implementation "android.arch.work:work-runtime-ktx:$work_version"
|
||||
}
|
||||
|
||||
|
||||
afterEvaluate {
|
||||
initAppLoginPropertiesIfNeeded()
|
||||
}
|
||||
|
||||
def initAppLoginPropertiesIfNeeded() {
|
||||
def propertiesFile = file(System.getProperty("user.home") + '/.gradle/gradle.properties')
|
||||
if (!propertiesFile.exists()) {
|
||||
def commentMessage = "This is autogenerated local property from system environment to prevent key to be committed to source control."
|
||||
ant.propertyfile(file: System.getProperty("user.home") + "/.gradle/gradle.properties", comment: commentMessage) {
|
||||
entry(key: "appLoginUrl", value: System.getProperty("appLoginUrl"))
|
||||
entry(key: "appLoginUsername", value: System.getProperty("appLoginUsername"))
|
||||
entry(key: "appLoginPassword", value: System.getProperty("appLoginPassword"))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -64,7 +64,6 @@ import com.ashokvarma.bottomnavigation.BottomNavigationBar
|
||||
import com.ashokvarma.bottomnavigation.BottomNavigationItem
|
||||
import com.ashokvarma.bottomnavigation.TextBadgeItem
|
||||
import com.ftinc.scoop.Scoop
|
||||
import com.github.stkent.amplify.tracking.Amplify
|
||||
import com.mikepenz.aboutlibraries.Libs
|
||||
import com.mikepenz.aboutlibraries.LibsBuilder
|
||||
import com.mikepenz.materialdrawer.Drawer
|
||||
@ -173,9 +172,6 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
|
||||
handleThemeBinding()
|
||||
|
||||
setSupportActionBar(toolBar)
|
||||
if (savedInstanceState == null) {
|
||||
Amplify.getSharedInstance().promptIfReady(promptView)
|
||||
}
|
||||
|
||||
db = Room.databaseBuilder(
|
||||
applicationContext,
|
||||
|
@ -14,9 +14,6 @@ import apps.amine.bou.readerforselfoss.utils.glide.loadMaybeBasicAuth
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.request.RequestOptions
|
||||
import com.ftinc.scoop.Scoop
|
||||
import com.github.stkent.amplify.feedback.DefaultEmailFeedbackCollector
|
||||
import com.github.stkent.amplify.feedback.GooglePlayStoreFeedbackCollector
|
||||
import com.github.stkent.amplify.tracking.Amplify
|
||||
import com.mikepenz.materialdrawer.util.AbstractDrawerImageLoader
|
||||
import com.mikepenz.materialdrawer.util.DrawerImageLoader
|
||||
import org.acra.ACRA
|
||||
@ -25,7 +22,6 @@ import org.acra.annotation.AcraCore
|
||||
import org.acra.annotation.AcraDialog
|
||||
import org.acra.annotation.AcraHttpSender
|
||||
import org.acra.sender.HttpSender
|
||||
import java.io.IOException
|
||||
import java.util.UUID.randomUUID
|
||||
|
||||
|
||||
@ -48,7 +44,6 @@ class MyApp : MultiDexApplication() {
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
config = Config(baseContext)
|
||||
initAmplify()
|
||||
|
||||
val prefs = getSharedPreferences(Config.settingsName, Context.MODE_PRIVATE)
|
||||
if (prefs.getString("unique_id", "").isEmpty()) {
|
||||
@ -91,13 +86,6 @@ class MyApp : MultiDexApplication() {
|
||||
|
||||
}
|
||||
|
||||
private fun initAmplify() {
|
||||
Amplify.initSharedInstance(this)
|
||||
.setPositiveFeedbackCollectors(GooglePlayStoreFeedbackCollector())
|
||||
.setCriticalFeedbackCollectors(DefaultEmailFeedbackCollector(Config.feedbackEmail))
|
||||
.applyAllDefaultRules()
|
||||
}
|
||||
|
||||
private fun initDrawerImageLoader() {
|
||||
DrawerImageLoader.init(object : AbstractDrawerImageLoader() {
|
||||
override fun set(
|
||||
|
@ -12,7 +12,10 @@ import com.burgstaller.okhttp.digest.CachingAuthenticator
|
||||
import com.burgstaller.okhttp.digest.Credentials
|
||||
import com.burgstaller.okhttp.digest.DigestAuthenticator
|
||||
import com.google.gson.GsonBuilder
|
||||
import okhttp3.Interceptor
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
import okhttp3.logging.HttpLoggingInterceptor
|
||||
import retrofit2.Call
|
||||
import retrofit2.Retrofit
|
||||
@ -62,6 +65,17 @@ class SelfossApi(
|
||||
.maybeWithSelfSigned(isWithSelfSignedCert)
|
||||
.authenticator(CachingAuthenticatorDecorator(this, authCache))
|
||||
.addInterceptor(AuthenticationCacheInterceptor(authCache))
|
||||
.addInterceptor(object: Interceptor {
|
||||
override fun intercept(chain: Interceptor.Chain): Response {
|
||||
val request: Request = chain.request()
|
||||
val response: Response = chain.proceed(request)
|
||||
|
||||
if (response.code() == 408) {
|
||||
return response
|
||||
}
|
||||
return response
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
init {
|
||||
|
@ -130,7 +130,7 @@ class LoadingWorker(val context: Context, params: WorkerParameters) : Worker(con
|
||||
}
|
||||
}
|
||||
}
|
||||
return Result.SUCCESS
|
||||
return Result.success()
|
||||
}
|
||||
|
||||
private fun <T> doAndReportOnFail(call: Call<T>, action: ActionEntity) {
|
||||
|
@ -48,7 +48,6 @@ import apps.amine.bou.readerforselfoss.utils.succeeded
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.request.RequestOptions
|
||||
import com.github.rubensousa.floatingtoolbar.FloatingToolbar
|
||||
import kotlinx.android.synthetic.main.fragment_article.*
|
||||
import kotlinx.android.synthetic.main.fragment_article.view.*
|
||||
import org.acra.ACRA
|
||||
import retrofit2.Call
|
||||
|
@ -8,33 +8,10 @@
|
||||
android:fitsSystemWindows="true"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<com.github.stkent.amplify.prompt.DefaultLayoutPromptView
|
||||
android:id="@+id/promptView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:prompt_view_user_opinion_question_title="@string/rating_prompt_title"
|
||||
app:prompt_view_user_opinion_question_positive_button_label="@string/rating_prompt_yes"
|
||||
app:prompt_view_user_opinion_question_negative_button_label="@string/rating_prompt_no"
|
||||
app:prompt_view_positive_feedback_question_title="@string/rating_prompt_rating_title"
|
||||
app:prompt_view_positive_feedback_question_positive_button_label="@string/rating_prompt_rating_yes"
|
||||
app:prompt_view_positive_feedback_question_negative_button_label="@string/rating_prompt_rating_no"
|
||||
app:prompt_view_critical_feedback_question_title="@string/rating_prompt_feedback_title"
|
||||
app:prompt_view_critical_feedback_question_positive_button_label="@string/rating_prompt_feedback_yes"
|
||||
app:prompt_view_critical_feedback_question_negative_button_label="@string/rating_prompt_feedback_no"
|
||||
app:prompt_view_thanks_title="@string/rating_prompt_thanks"
|
||||
app:prompt_view_positive_button_background_color="@color/colorPrimary"
|
||||
app:prompt_view_positive_button_text_color="@color/white"
|
||||
app:prompt_view_positive_button_border_color="@color/colorPrimary"
|
||||
app:prompt_view_negative_button_background_color="@color/colorAccent"
|
||||
app:prompt_view_negative_button_border_color="@color/white"
|
||||
app:prompt_view_background_color="?attr/colorAccent"
|
||||
app:prompt_view_thanks_display_time_ms="2000"/>
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:id="@+id/coordLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@id/promptView">
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:id="@+id/intern_coordLayout"
|
||||
|
@ -4,15 +4,15 @@
|
||||
<string name="app_name">"Selfoss 阅读器"</string>
|
||||
<string name="title_activity_login">"登录"</string>
|
||||
<string name="prompt_password">"密码"</string>
|
||||
<string name="prompt_http_password">"HTTP 密码"</string>
|
||||
<string name="prompt_http_password">"HTTP 密碼"</string>
|
||||
<string name="action_sign_in">"转至"</string>
|
||||
<string name="error_invalid_password">"密码不够长"</string>
|
||||
<string name="error_field_required">"必填字段"</string>
|
||||
<string name="error_field_required">"欄位必填"</string>
|
||||
<string name="prompt_url">"网址"</string>
|
||||
<string name="withLoginSwitch">"需要登录?"</string>
|
||||
<string name="withLoginSwitch">"需要登入?"</string>
|
||||
<string name="withHttpLoginSwitch">"请先登录网站"</string>
|
||||
<string name="login_url_problem">"哎呀。您可能需要在网址的末尾添加一个 \"/\"。"</string>
|
||||
<string name="prompt_login">"用户名"</string>
|
||||
<string name="prompt_login">"使用者名稱"</string>
|
||||
<string name="prompt_http_login">"HTTP 用户名"</string>
|
||||
<string name="label_share">"分享"</string>
|
||||
<string name="readAll">"全部阅读"</string>
|
||||
|
@ -13,11 +13,11 @@
|
||||
<color name="background_grey">#FFe4e4e4</color>
|
||||
|
||||
<color name="dark_webview">#FF303030</color>
|
||||
<color name="dark_webview_text">@color/md_white_1000</color>
|
||||
<color name="light_webview">@color/md_grey_50</color>
|
||||
<color name="light_webview_text">@color/md_grey_900</color>
|
||||
<color name="dark_webview_text">#FFFFFF</color>
|
||||
<color name="light_webview">#FAFAFA</color>
|
||||
<color name="light_webview_text">#212121</color>
|
||||
|
||||
<color name="cardBackgroundColor">#FFFFFFFF</color>
|
||||
<color name="materialDrawerHeaderSelectionText">@color/md_grey_900</color>
|
||||
<color name="materialDrawerHeaderSelectionText">#212121</color>
|
||||
<color name="darkBackground">#FF303030</color>
|
||||
</resources>
|
||||
|
@ -2,11 +2,12 @@
|
||||
|
||||
buildscript {
|
||||
ext {
|
||||
kotlin_version = '1.3.0'
|
||||
kotlin_version = '1.3.21'
|
||||
android_version = '1.0.0'
|
||||
androidx_version = '1.0.2'
|
||||
lifecycle_version = '2.0.0'
|
||||
room_version = '2.1.0-alpha01'
|
||||
work_version = "1.0.0-alpha10"
|
||||
room_version = '2.1.0-alpha06'
|
||||
work_version = "1.0.1-rc01"
|
||||
}
|
||||
repositories {
|
||||
google()
|
||||
@ -16,7 +17,7 @@ buildscript {
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.3.0'
|
||||
classpath 'com.android.tools.build:gradle:3.3.2'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
}
|
||||
}
|
||||
|
@ -55,27 +55,10 @@ redirect_from: "/ReaderforSelfoss/"
|
||||
|
||||
|
||||
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-102547516-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
|
||||
</script>
|
||||
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
||||
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
||||
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
||||
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
||||
})(window,document,'script','dataLayer','GTM-5R5LR4V');</script>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body id="main">
|
||||
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5R5LR4V"
|
||||
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||||
|
||||
<div id="container" itemscope itemtype="http://schema.org/SoftwareApplication">
|
||||
<div id="titles"><h1 itemprop="name">Reader For Selfoss</h1><h2>A new <span itemprop="operatingSystem">Android</span> Selfoss RSS reader</h2></div>
|
||||
@ -83,7 +66,6 @@ redirect_from: "/ReaderforSelfoss/"
|
||||
<img src="images/icon.png" id="logo" itemprop="image">
|
||||
</div>
|
||||
<div id="links">
|
||||
<a itemprop="downloadUrl" id="store" href='https://play.google.com/store/apps/details?id=apps.amine.bou.readerforselfoss&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png'/></a>
|
||||
|
||||
|
||||
<a class="github-button" href="https://github.com/aminecmi/readerforselfoss" data-size="large" aria-label="Star aminecmi/readerforselfoss on GitHub">Star</a>
|
||||
|
Reference in New Issue
Block a user