Compare commits
15 Commits
Author | SHA1 | Date | |
---|---|---|---|
b44a200731 | |||
016815e0d1 | |||
590534e4a6 | |||
7ea9d4e519 | |||
e0ab09f533 | |||
fbe98f1b16 | |||
d0675b8443 | |||
3ea1ed02ae | |||
ba120b1e0b | |||
acf6995c2d | |||
8306860f90 | |||
65974166be | |||
ee8924f986 | |||
170e575465 | |||
b7d5317b10 |
5
.github/CONTRIBUTING.md
vendored
@ -38,18 +38,19 @@ Always check if the web version of your instance is working.
|
|||||||
* Be willing to accept criticism on your PRs (as I am on mine).
|
* Be willing to accept criticism on your PRs (as I am on mine).
|
||||||
* Remember that PR review can take time.
|
* Remember that PR review can take time.
|
||||||
|
|
||||||
|
|
||||||
# Build the project
|
# Build the project
|
||||||
|
|
||||||
You can directly import this project into IntellIJ/Android Studio.
|
You can directly import this project into IntellIJ/Android Studio.
|
||||||
|
|
||||||
You'll have to:
|
You'll have to:
|
||||||
|
|
||||||
- [Create your own launcher icon](https://developer.android.com/studio/write/image-asset-studio.html#creating-launcher)
|
|
||||||
|
|
||||||
- Configure Fabric, or [remove it](https://docs.fabric.io/android/fabric/settings/removing.html#).
|
- Configure Fabric, or [remove it](https://docs.fabric.io/android/fabric/settings/removing.html#).
|
||||||
|
- Create a firebase project and add the `google-services.json` to the `app/` folder.
|
||||||
- Define the following in `res/values/strings.xml` or create `res/values/secrets.xml`
|
- Define the following in `res/values/strings.xml` or create `res/values/secrets.xml`
|
||||||
|
|
||||||
- mercury: A [Mercury](https://mercury.postlight.com/web-parser/) web parser api key for the internal browser
|
- mercury: A [Mercury](https://mercury.postlight.com/web-parser/) web parser api key for the internal browser
|
||||||
- feedback_email: An email to receive users feedback.
|
- feedback_email: An email to receive users feedback.
|
||||||
- source_url: an url to the source code, used in the settings
|
- source_url: an url to the source code, used in the settings
|
||||||
- tracker_url: an url to the tracker, used in the settings
|
- tracker_url: an url to the tracker, used in the settings
|
||||||
|
- To run your app, you'll have to add `-P appLoginUrl="your.selfoss-instance.url" -P appLoginUsername="Username" -P appLoginPassword="password"`. (These are only used to run the espresso tests. You should be able to use empty strings or fake values to build the app)
|
||||||
|
1
.gitignore
vendored
@ -216,5 +216,4 @@ gradle-app.setting
|
|||||||
|
|
||||||
secrets.xml
|
secrets.xml
|
||||||
|
|
||||||
mipmap-*
|
|
||||||
release/
|
release/
|
66
.travis.yml
@ -1,66 +0,0 @@
|
|||||||
language: android
|
|
||||||
|
|
||||||
jdk:
|
|
||||||
- oraclejdk8
|
|
||||||
|
|
||||||
android:
|
|
||||||
components:
|
|
||||||
- tools
|
|
||||||
- platform-tools
|
|
||||||
- tools
|
|
||||||
|
|
||||||
- build-tools-26.0.0
|
|
||||||
|
|
||||||
- android-26
|
|
||||||
- android-22
|
|
||||||
|
|
||||||
- extra-google-google_play_services
|
|
||||||
- extra-google-m2repository
|
|
||||||
- extra-android-m2repository
|
|
||||||
- extra-android-support
|
|
||||||
|
|
||||||
- add-on
|
|
||||||
- extra
|
|
||||||
|
|
||||||
- sys-img-armeabi-v7a-android-22
|
|
||||||
|
|
||||||
licenses:
|
|
||||||
- 'android-sdk-license-.+'
|
|
||||||
- 'google-gdk-license-.+'
|
|
||||||
|
|
||||||
before_script:
|
|
||||||
- mkdir app/src/main/res/mipmap-hdpi
|
|
||||||
- convert -size 72x72 xc:white app/src/main/res/mipmap-hdpi/ic_launcher.png
|
|
||||||
- mkdir app/src/main/res/mipmap-mdpi
|
|
||||||
- convert -size 48x48 xc:white app/src/main/res/mipmap-mdpi/ic_launcher.png
|
|
||||||
- mkdir app/src/main/res/mipmap-xhdpi
|
|
||||||
- convert -size 96x96 xc:white app/src/main/res/mipmap-xhdpi/ic_launcher.png
|
|
||||||
- mkdir app/src/main/res/mipmap-xxhdpi
|
|
||||||
- convert -size 192x192 xc:white app/src/main/res/mipmap-xxhdpi/ic_launcher.png
|
|
||||||
- mkdir app/src/main/res/mipmap-xxxhdpi
|
|
||||||
- convert -size 512x512 xc:white app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
|
|
||||||
|
|
||||||
- echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
|
|
||||||
- emulator -avd test -no-audio -no-window &
|
|
||||||
- android-wait-for-emulator
|
|
||||||
- adb shell input keyevent 82 &
|
|
||||||
- adb shell input tap 650 300 &
|
|
||||||
|
|
||||||
script:
|
|
||||||
- ./gradlew assemble --configure-on-demand --no-daemon -P crashlyticsdemoApikey=$FABRIC_API_KEY -P crashlyticsdemoApisecret=$FABRIC_API_SECRET -P appLoginUrl=$LOGIN_URL -P appLoginUsername=$LOGIN_USER_NAME -P appLoginPassword=$LOGIN_PASSWORD -PdisablePreDex -Pandroid.threadPoolSize=1 -Porg.gradle.parallel=false
|
|
||||||
- ./gradlew connectedAndroidTest --configure-on-demand --no-daemon --stacktrace -P crashlyticsdemoApikey=$FABRIC_API_KEY -P crashlyticsdemoApisecret=$FABRIC_API_SECRET -P appLoginUrl=$LOGIN_URL -P appLoginUsername=$LOGIN_USER_NAME -P appLoginPassword=$LOGIN_PASSWORD -PdisablePreDex -Pandroid.threadPoolSize=1 -Porg.gradle.parallel=false
|
|
||||||
|
|
||||||
|
|
||||||
before_cache:
|
|
||||||
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
|
|
||||||
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
|
|
||||||
cache:
|
|
||||||
directories:
|
|
||||||
- $HOME/.gradle/caches/
|
|
||||||
- $HOME/.gradle/wrapper/
|
|
||||||
- $HOME/.android/build-cache
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- openssl aes-256-cbc -K $encrypted_cab814aaeabc_key -iv $encrypted_cab814aaeabc_iv
|
|
||||||
-in secrets.tar.enc -out secrets.tar -d
|
|
||||||
- tar xvf secrets.tar
|
|
12
CHANGELOG.md
@ -1,3 +1,15 @@
|
|||||||
|
**1.5.2.01**
|
||||||
|
|
||||||
|
- New (Better) Icon !
|
||||||
|
|
||||||
|
**1.5.2.0**
|
||||||
|
|
||||||
|
- New Icon !
|
||||||
|
|
||||||
|
**1.5.1.9/10/11**
|
||||||
|
|
||||||
|
- Hiding the unread badge when marking all items as read.
|
||||||
|
|
||||||
**1.5.1.8**
|
**1.5.1.8**
|
||||||
|
|
||||||
- Fixes and libs updates.
|
- Fixes and libs updates.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# ReaderForSelfoss
|
# ReaderForSelfoss
|
||||||
|
|
||||||
[](https://travis-ci.org/aminecmi/ReaderforSelfoss)
|
[](http://jenkins.amine-bou.fr/job/ReaderForSelfoss/)
|
||||||
|
|
||||||
[](https://gitter.im/amine-bou/ReaderForSelfoss)
|
[](https://gitter.im/amine-bou/ReaderForSelfoss)
|
||||||
|
|
||||||
@ -22,3 +22,8 @@ Check the [Contribution guide](https://github.com/aminecmi/ReaderforSelfoss/blob
|
|||||||
- [Check what changed](https://github.com/aminecmi/ReaderforSelfoss/blob/master/CHANGELOG.md)
|
- [Check what changed](https://github.com/aminecmi/ReaderforSelfoss/blob/master/CHANGELOG.md)
|
||||||
- [See what I'm doing](https://github.com/aminecmi/ReaderforSelfoss/projects/1)
|
- [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)
|
- [Create an issue, or request a new feature](https://github.com/aminecmi/ReaderforSelfoss/issues)
|
||||||
|
|
||||||
|
|
||||||
|
#Icon
|
||||||
|
|
||||||
|
I used RSS Document by AlfredoCreates.com from the Noun Project. You can see it [here](https://thenounproject.com/search/?q=rss&i=596333).
|
@ -8,6 +8,21 @@ buildscript {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def gitVersion() {
|
||||||
|
def process = "git describe --abbrev=0 --tags".execute()
|
||||||
|
return process.text.substring(1).replaceAll("\\.", "")
|
||||||
|
}
|
||||||
|
|
||||||
|
def versionCodeFromGit() {
|
||||||
|
println "version code " + gitVersion().toInteger()
|
||||||
|
return gitVersion().toInteger()
|
||||||
|
}
|
||||||
|
|
||||||
|
def versionNameFromGit() {
|
||||||
|
println "version code " + gitVersion().trim()
|
||||||
|
return gitVersion().trim()
|
||||||
|
}
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
|
|
||||||
apply plugin: 'io.fabric'
|
apply plugin: 'io.fabric'
|
||||||
@ -25,8 +40,8 @@ android {
|
|||||||
applicationId "apps.amine.bou.readerforselfoss"
|
applicationId "apps.amine.bou.readerforselfoss"
|
||||||
minSdkVersion 16
|
minSdkVersion 16
|
||||||
targetSdkVersion 26
|
targetSdkVersion 26
|
||||||
versionCode 1518
|
versionCode versionCodeFromGit()
|
||||||
versionName "1.5.1.8"
|
versionName versionNameFromGit()
|
||||||
|
|
||||||
// Enabling multidex support.
|
// Enabling multidex support.
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
@ -170,4 +185,4 @@ def initAppLoginPropertiesIfNeeded() {
|
|||||||
entry(key: "appLoginPassword", value: System.getProperty("appLoginPassword"))
|
entry(key: "appLoginPassword", value: System.getProperty("appLoginPassword"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,7 @@ class HomeActivityEspressoTest {
|
|||||||
|
|
||||||
intended(hasComponent(LoginActivity::class.java.name), times(1))
|
intended(hasComponent(LoginActivity::class.java.name), times(1))
|
||||||
|
|
||||||
onView(isRoot()).perform(pressBack())
|
//onView(isRoot()).perform(pressBack())
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ class IntroActivityEspressoTest {
|
|||||||
Intents.init()
|
Intents.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
/*@Test
|
||||||
fun nextEachTimes() {
|
fun nextEachTimes() {
|
||||||
|
|
||||||
rule.launchActivity(Intent())
|
rule.launchActivity(Intent())
|
||||||
@ -61,7 +61,7 @@ class IntroActivityEspressoTest {
|
|||||||
intended(hasComponent(IntroActivity::class.java.name), times(1))
|
intended(hasComponent(IntroActivity::class.java.name), times(1))
|
||||||
intended(hasComponent(LoginActivity::class.java.name), times(1))
|
intended(hasComponent(LoginActivity::class.java.name), times(1))
|
||||||
|
|
||||||
}
|
}*/
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun nextBackRandomTimes() {
|
fun nextBackRandomTimes() {
|
||||||
|
BIN
app/src/main/ic_launcher-web.png
Normal file
After Width: | Height: | Size: 61 KiB |
@ -761,8 +761,10 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
|
|||||||
|
|
||||||
api.readAll(ids).enqueue(object : Callback<SuccessResponse> {
|
api.readAll(ids).enqueue(object : Callback<SuccessResponse> {
|
||||||
override fun onResponse(call: Call<SuccessResponse>, response: Response<SuccessResponse>) {
|
override fun onResponse(call: Call<SuccessResponse>, response: Response<SuccessResponse>) {
|
||||||
if (response.body() != null && response.body()!!.isSuccess)
|
if (response.body() != null && response.body()!!.isSuccess) {
|
||||||
Toast.makeText(this@HomeActivity, R.string.all_posts_read, Toast.LENGTH_SHORT).show()
|
Toast.makeText(this@HomeActivity, R.string.all_posts_read, Toast.LENGTH_SHORT).show()
|
||||||
|
tabNewBadge.removeBadge()
|
||||||
|
}
|
||||||
else
|
else
|
||||||
Toast.makeText(this@HomeActivity, R.string.all_posts_not_read, Toast.LENGTH_SHORT).show()
|
Toast.makeText(this@HomeActivity, R.string.all_posts_not_read, Toast.LENGTH_SHORT).show()
|
||||||
|
|
||||||
|
@ -31,6 +31,8 @@ class MyApp : MultiDexApplication() {
|
|||||||
|
|
||||||
initTheme()
|
initTheme()
|
||||||
|
|
||||||
|
tryToHandleBug()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initAmplify() {
|
private fun initAmplify() {
|
||||||
@ -82,4 +84,16 @@ class MyApp : MultiDexApplication() {
|
|||||||
.setSharedPreferences(PreferenceManager.getDefaultSharedPreferences(this))
|
.setSharedPreferences(PreferenceManager.getDefaultSharedPreferences(this))
|
||||||
.initialize()
|
.initialize()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun tryToHandleBug() {
|
||||||
|
val oldHandler = Thread.getDefaultUncaughtExceptionHandler()
|
||||||
|
|
||||||
|
Thread.setDefaultUncaughtExceptionHandler { thread, e ->
|
||||||
|
if (e is java.lang.NoClassDefFoundError && e.stackTrace.asList().any { it.toString().contains("android.view.ViewDebug") })
|
||||||
|
Unit
|
||||||
|
else
|
||||||
|
oldHandler.uncaughtException(thread, e)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
@ -2,12 +2,12 @@
|
|||||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:drawable="@color/white"/>
|
android:drawable="@color/ic_launcher_background"/>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
<bitmap
|
<bitmap
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:src="@mipmap/ic_launcher"/>
|
android:src="@mipmap/ic_launcher_foreground"/>
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
</layer-list>
|
</layer-list>
|
5
app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<background android:drawable="@color/ic_launcher_background"/>
|
||||||
|
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||||
|
</adaptive-icon>
|
5
app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<background android:drawable="@color/ic_launcher_background"/>
|
||||||
|
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||||
|
</adaptive-icon>
|
BIN
app/src/main/res/mipmap-hdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
app/src/main/res/mipmap-hdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
app/src/main/res/mipmap-mdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
app/src/main/res/mipmap-mdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
app/src/main/res/mipmap-xhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 15 KiB |
4
app/src/main/res/values/ic_launcher_background.xml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<color name="ic_launcher_background">#26B29F</color>
|
||||||
|
</resources>
|
@ -7,7 +7,7 @@ buildscript {
|
|||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.0.0-alpha5'
|
classpath 'com.android.tools.build:gradle:3.0.0-alpha8'
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
|