Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
24ae115ed4 | |||
7f345558cd | |||
57177cc910 | |||
cea258bc21 | |||
ed9b1c8ba7 | |||
5a79fd89e9 | |||
42a130db08 | |||
320a8d19de | |||
5721506007 | |||
803e8cb2f4 |
24
CHANGELOG.md
24
CHANGELOG.md
@ -1,3 +1,27 @@
|
||||
**1.5.4.06**
|
||||
|
||||
- Loading more items on swipe too.
|
||||
|
||||
- Fixed popup menu style. User may need to reselect the theme.
|
||||
|
||||
- Disabled reporting marking items as read if there isn't an issue.
|
||||
|
||||
**1.5.4.05**
|
||||
|
||||
- Translation fix.
|
||||
|
||||
**1.5.4.04**
|
||||
|
||||
- Fixing an issue with marking items as read (something related to an old version of selfoss).
|
||||
|
||||
**1.5.4.03**
|
||||
|
||||
- Trying to fix some issue with pre-launch reports. Reverted because it seems to be related to the dev console side.
|
||||
|
||||
**1.5.4.02**
|
||||
|
||||
- Fixing full height cards issue.
|
||||
|
||||
**1.5.4.01**
|
||||
|
||||
- Removed the "apk downloaded from outside of playstore" message.
|
||||
|
@ -207,6 +207,18 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
|
||||
else
|
||||
tabNewBadge.hide()
|
||||
|
||||
|
||||
val manager = recyclerView.layoutManager
|
||||
val lastVisibleItem: Int = when (manager) {
|
||||
is StaggeredGridLayoutManager -> manager.findLastCompletelyVisibleItemPositions(null).last()
|
||||
is GridLayoutManager -> manager.findLastCompletelyVisibleItemPosition()
|
||||
else -> 0
|
||||
}
|
||||
|
||||
if (lastVisibleItem == (items.size - 1)) {
|
||||
getElementsAccordingToTab(appendResults = true)
|
||||
}
|
||||
|
||||
} catch (e: IndexOutOfBoundsException) {}
|
||||
|
||||
}
|
||||
|
@ -2,7 +2,6 @@ package apps.amine.bou.readerforselfoss
|
||||
|
||||
import android.animation.Animator
|
||||
import android.animation.AnimatorListenerAdapter
|
||||
import android.app.ActivityManager
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
@ -285,15 +284,11 @@ class LoginActivity : AppCompatActivity() {
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.about -> {
|
||||
if (!ActivityManager.isUserAMonkey()){
|
||||
LibsBuilder()
|
||||
.withActivityStyle(Libs.ActivityStyle.LIGHT_DARK_TOOLBAR)
|
||||
.withAboutIconShown(true)
|
||||
.withAboutVersionShown(true)
|
||||
.start(this)
|
||||
} else {
|
||||
Toast.makeText(this@LoginActivity, "You may be a bot", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
LibsBuilder()
|
||||
.withActivityStyle(Libs.ActivityStyle.LIGHT_DARK_TOOLBAR)
|
||||
.withAboutIconShown(true)
|
||||
.withAboutVersionShown(true)
|
||||
.start(this)
|
||||
return true
|
||||
}
|
||||
R.id.loging_debug -> {
|
||||
|
@ -125,7 +125,7 @@ class ItemCardAdapter(private val app: Activity,
|
||||
|
||||
api.markItem(i.id).enqueue(object : Callback<SuccessResponse> {
|
||||
override fun onResponse(call: Call<SuccessResponse>, response: Response<SuccessResponse>) {
|
||||
if (debugReadingItems) {
|
||||
if (!response.succeeded() && debugReadingItems) {
|
||||
val message =
|
||||
"message: ${response.message()} " +
|
||||
"response isSuccess: ${response.isSuccessful} " +
|
||||
|
@ -138,7 +138,7 @@ class ItemListAdapter(private val app: Activity,
|
||||
|
||||
api.markItem(i.id).enqueue(object : Callback<SuccessResponse> {
|
||||
override fun onResponse(call: Call<SuccessResponse>, response: Response<SuccessResponse>) {
|
||||
if (debugReadingItems) {
|
||||
if (!response.succeeded() && debugReadingItems) {
|
||||
val message =
|
||||
"message: ${response.message()} " +
|
||||
"response isSuccess: ${response.isSuccessful} " +
|
||||
|
@ -1,21 +1,16 @@
|
||||
package apps.amine.bou.readerforselfoss.api.selfoss
|
||||
|
||||
import retrofit2.Call
|
||||
import retrofit2.http.DELETE
|
||||
import retrofit2.http.Field
|
||||
import retrofit2.http.FormUrlEncoded
|
||||
import retrofit2.http.GET
|
||||
import retrofit2.http.POST
|
||||
import retrofit2.http.Path
|
||||
import retrofit2.http.Query
|
||||
|
||||
import retrofit2.http.*
|
||||
|
||||
|
||||
// codebeat:disable[ARITY]
|
||||
internal interface SelfossService {
|
||||
|
||||
@GET("login")
|
||||
fun loginToSelfoss(@Query("username") username: String, @Query("password") password: String): Call<SuccessResponse>
|
||||
|
||||
|
||||
@GET("items")
|
||||
fun getItems(@Query("type") type: String,
|
||||
@Query("tag") tag: String?,
|
||||
@ -26,17 +21,21 @@ internal interface SelfossService {
|
||||
@Query("items") items: Int,
|
||||
@Query("offset") offset: Int): Call<List<Item>>
|
||||
|
||||
|
||||
@Headers("Content-Type: application/x-www-form-urlencoded")
|
||||
@POST("mark/{id}")
|
||||
fun markAsRead(@Path("id") id: String,
|
||||
@Query("username") username: String,
|
||||
@Query("password") password: String): Call<SuccessResponse>
|
||||
|
||||
|
||||
@Headers("Content-Type: application/x-www-form-urlencoded")
|
||||
@POST("unmark/{id}")
|
||||
fun unmarkAsRead(@Path("id") id: String,
|
||||
@Query("username") username: String,
|
||||
@Query("password") password: String): Call<SuccessResponse>
|
||||
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST("mark")
|
||||
fun markAllAsRead(@Field("ids[]") ids: List<String>,
|
||||
@ -44,12 +43,14 @@ internal interface SelfossService {
|
||||
@Query("password") password: String): Call<SuccessResponse>
|
||||
|
||||
|
||||
@Headers("Content-Type: application/x-www-form-urlencoded")
|
||||
@POST("starr/{id}")
|
||||
fun starr(@Path("id") id: String,
|
||||
@Query("username") username: String,
|
||||
@Query("password") password: String): Call<SuccessResponse>
|
||||
|
||||
|
||||
@Headers("Content-Type: application/x-www-form-urlencoded")
|
||||
@POST("unstarr/{id}")
|
||||
fun unstarr(@Path("id") id: String,
|
||||
@Query("username") username: String,
|
||||
@ -70,10 +71,12 @@ internal interface SelfossService {
|
||||
fun update(@Query("username") username: String,
|
||||
@Query("password") password: String): Call<String>
|
||||
|
||||
|
||||
@GET("sources/spouts")
|
||||
fun spouts(@Query("username") username: String,
|
||||
@Query("password") password: String): Call<Map<String, Spout>>
|
||||
|
||||
|
||||
@GET("sources/list")
|
||||
fun sources(@Query("username") username: String,
|
||||
@Query("password") password: String): Call<List<Sources>>
|
||||
@ -84,6 +87,7 @@ internal interface SelfossService {
|
||||
@Query("username") username: String,
|
||||
@Query("password") password: String): Call<SuccessResponse>
|
||||
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST("source")
|
||||
fun createSource(@Field("title") title: String,
|
||||
|
@ -0,0 +1,7 @@
|
||||
package apps.amine.bou.readerforselfoss.utils
|
||||
|
||||
import apps.amine.bou.readerforselfoss.api.selfoss.SuccessResponse
|
||||
import retrofit2.Response
|
||||
|
||||
fun Response<SuccessResponse>.succeeded(): Boolean =
|
||||
this.code() === 200 && this.body() != null && this.body()!!.isSuccess
|
@ -15,7 +15,8 @@
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
app:theme="@style/ToolBarStyle" />
|
||||
app:theme="@style/ToolBarStyle"
|
||||
app:popupTheme="?attr/toolbarPopupTheme" />
|
||||
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
|
||||
|
@ -54,7 +54,8 @@
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
app:theme="@style/ToolBarStyle" />
|
||||
app:theme="@style/ToolBarStyle"
|
||||
app:popupTheme="?attr/toolbarPopupTheme" />
|
||||
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
|
||||
|
@ -14,7 +14,8 @@
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
app:theme="@style/ToolBarStyle" />
|
||||
app:theme="@style/ToolBarStyle"
|
||||
app:popupTheme="?attr/toolbarPopupTheme" />
|
||||
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
<LinearLayout
|
||||
|
@ -16,7 +16,8 @@
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
app:theme="@style/ToolBarStyle" />
|
||||
app:theme="@style/ToolBarStyle"
|
||||
app:popupTheme="?attr/toolbarPopupTheme" />
|
||||
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
|
||||
|
@ -9,6 +9,7 @@
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
app:theme="@style/ToolBarStyle" />
|
||||
app:theme="@style/ToolBarStyle"
|
||||
app:popupTheme="?attr/toolbarPopupTheme" />
|
||||
|
||||
</android.support.design.widget.AppBarLayout>
|
@ -6,20 +6,20 @@
|
||||
<string name="prompt_password">"Mot de passe"</string>
|
||||
<string name="prompt_http_password">"Mot de passe HTTP"</string>
|
||||
<string name="action_sign_in">"Valider"</string>
|
||||
<string name="error_invalid_password">"Mot de passe pas assez lent"</string>
|
||||
<string name="error_invalid_password">"Mot de passe trop court"</string>
|
||||
<string name="error_field_required">"Champ requis"</string>
|
||||
<string name="prompt_url">"Url Selfoss"</string>
|
||||
<string name="withLoginSwitch">"Avec login ?"</string>
|
||||
<string name="withHttpLoginSwitch">"Avec login HTTP ?"</string>
|
||||
<string name="login_url_problem">"Petit soucis. Il manque peut être un / à la fin ?"</string>
|
||||
<string name="login_url_problem">"Petit souci. Il manque peut être un / à la fin ?"</string>
|
||||
<string name="prompt_login">"Utilisateur"</string>
|
||||
<string name="prompt_http_login">"Utilisateur HTTP"</string>
|
||||
<string name="label_share">"Partager"</string>
|
||||
<string name="readAll">"Tout lire"</string>
|
||||
<string name="action_disconnect">"Déconnecter"</string>
|
||||
<string name="title_activity_settings">"Paramètres"</string>
|
||||
<string name="pref_header_general">"General"</string>
|
||||
<string name="pref_switch_actions_tap_title">"Action du clique sur un article"</string>
|
||||
<string name="pref_header_general">"Général"</string>
|
||||
<string name="pref_switch_actions_tap_title">"Action du clic sur un article"</string>
|
||||
<string name="add_source_hint_tags">"Tag1, Tag2, Tag3"</string>
|
||||
<string name="add_source_hint_url">"Lien"</string>
|
||||
<string name="add_source_hint_name">"Nom"</string>
|
||||
@ -101,20 +101,20 @@
|
||||
<string name="card_height_on">La taille de la carte s\'adaptera au contenu</string>
|
||||
<string name="card_height_off">La taille de la carte sera fixe</string>
|
||||
<string name="source_code">Code source</string>
|
||||
<string name="cant_mark_read">Kan het artikel niet als gelezen markeren</string>
|
||||
<string name="cant_mark_read">Impossible de marquer l\'article comme lu</string>
|
||||
<string name="drawer_error_loading_tags">Erreur lors du chargement des tags…</string>
|
||||
<string name="drawer_error_loading_sources">Erreur lors du chargement des sources…</string>
|
||||
<string name="drawer_item_filters">Filtres</string>
|
||||
<string name="drawer_action_clear">raz</string>
|
||||
<string name="drawer_item_tags">Tags</string>
|
||||
<string name="drawer_item_sources">Sources</string>
|
||||
<string name="drawer_action_edit">editer</string>
|
||||
<string name="drawer_action_edit">éditer</string>
|
||||
<string name="cache_drawer_error" tools:keep="@string/cache_drawer_error">Impossible de mettre en cache les filtres pour le drawer</string>
|
||||
<string name="no_tags_loaded">Pas de tags chargés</string>
|
||||
<string name="no_sources_loaded">Pas de sources chargés</string>
|
||||
<string name="drawer_loading">Chargement …</string>
|
||||
<string name="menu_home_search">Rechercher</string>
|
||||
<string name="can_delete_source">Can\'t delete the source…</string>
|
||||
<string name="can_delete_source">Impossible de supprimer la source…</string>
|
||||
<string name="base_url_error">Il y a eu un souci lors de la communication avec votre instance Selfoss. Si le problèmes persiste, contactez-moi pour trouver une solution.</string>
|
||||
<string name="pref_header_theme">Thèmes</string>
|
||||
<string name="default_theme">Par défaut</string>
|
||||
@ -132,7 +132,7 @@
|
||||
<string name="indigo_pink_dark_theme">Indigo/Rose/Foncé</string>
|
||||
<string name="red_teal_dark_theme">Rouge/Sarcelle/Foncé</string>
|
||||
<string name="pref_header_debug">Debug</string>
|
||||
<string name="login_debug_title">Activez pour loguer toutes les erreurs de conexion</string>
|
||||
<string name="login_debug_title">Activez pour logguer toutes les erreurs de connexion</string>
|
||||
<string name="login_debug_on">Toutes les erreurs de connexion vont être loguées</string>
|
||||
<string name="login_debug_off">Aucune erreur de connexion ne sera loguée</string>
|
||||
<string name="login_menu_debug">Debug</string>
|
||||
@ -142,7 +142,7 @@
|
||||
<string name="pref_api_items_number_title">Nombre d\'articles chargés</string>
|
||||
<string name="read_debug_title">Des articles lus marqués comme non lus ?</string>
|
||||
<string name="read_debug_off">Aucun log quand un article est marqué comme lu</string>
|
||||
<string name="read_debug_on">Les appels API vont être logués lorsequ\'un article est marqué comme lu</string>
|
||||
<string name="read_debug_on">Les appels API vont être logués lorsqu\'un article est marqué comme lu</string>
|
||||
<string name="summary_debug_identifier">Identifiant de debug</string>
|
||||
<string name="unique_id_to_clipboard">Texte copié</string>
|
||||
<string name="display_header_drawer_summary">Afficher une entête avec l\'url de votre instance de Selfoss en haut du drawer lateral.</string>
|
||||
|
@ -14,6 +14,8 @@
|
||||
<item name="android:textColorPrimary">@color/md_grey_900</item>
|
||||
<item name="android:textColorSecondary">@color/md_grey_400</item>
|
||||
<item name="material_drawer_header_selection_text">@color/md_grey_900</item>
|
||||
|
||||
<item name="toolbarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
|
||||
</style>
|
||||
|
||||
<style name="NoBarDark" parent="MaterialDrawerTheme">
|
||||
@ -27,6 +29,8 @@
|
||||
<item name="android:textColorPrimary">@color/md_white_1000</item>
|
||||
<item name="android:textColorSecondary">@color/md_grey_600</item>
|
||||
<item name="material_drawer_header_selection_text">@color/md_grey_900</item>
|
||||
|
||||
<item name="toolbarPopupTheme">@style/ThemeOverlay.AppCompat.Dark</item>
|
||||
</style>
|
||||
|
||||
<!-- ToolBar -->
|
||||
@ -50,6 +54,8 @@
|
||||
<item name="android:textColorPrimary">@color/md_grey_900</item>
|
||||
<item name="android:textColorSecondary">@color/md_grey_400</item>
|
||||
<item name="material_drawer_header_selection_text">@color/md_grey_900</item>
|
||||
|
||||
<item name="toolbarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
|
||||
</style>
|
||||
|
||||
<style name="NoBarBlueAmberDark" parent="MaterialDrawerTheme">
|
||||
@ -63,6 +69,8 @@
|
||||
<item name="android:textColorPrimary">@color/md_white_1000</item>
|
||||
<item name="android:textColorSecondary">@color/md_grey_600</item>
|
||||
<item name="material_drawer_header_selection_text">@color/md_grey_900</item>
|
||||
|
||||
<item name="toolbarPopupTheme">@style/ThemeOverlay.AppCompat.Dark</item>
|
||||
</style>
|
||||
|
||||
<style name="NoBarGreyOrange" parent="MaterialDrawerTheme.Light">
|
||||
@ -75,6 +83,8 @@
|
||||
<item name="android:textColorPrimary">@color/md_grey_900</item>
|
||||
<item name="android:textColorSecondary">@color/md_grey_400</item>
|
||||
<item name="material_drawer_header_selection_text">@color/md_grey_900</item>
|
||||
|
||||
<item name="toolbarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
|
||||
</style>
|
||||
|
||||
<style name="NoBarGreyOrangeDark" parent="MaterialDrawerTheme">
|
||||
@ -88,6 +98,8 @@
|
||||
<item name="android:textColorPrimary">@color/md_white_1000</item>
|
||||
<item name="android:textColorSecondary">@color/md_grey_600</item>
|
||||
<item name="material_drawer_header_selection_text">@color/md_grey_900</item>
|
||||
|
||||
<item name="toolbarPopupTheme">@style/ThemeOverlay.AppCompat.Dark</item>
|
||||
</style>
|
||||
|
||||
<style name="NoBarIndigoPink" parent="MaterialDrawerTheme.Light">
|
||||
@ -100,6 +112,8 @@
|
||||
<item name="android:textColorPrimary">@color/md_grey_900</item>
|
||||
<item name="android:textColorSecondary">@color/md_grey_400</item>
|
||||
<item name="material_drawer_header_selection_text">@color/md_grey_900</item>
|
||||
|
||||
<item name="toolbarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
|
||||
</style>
|
||||
|
||||
<style name="NoBarIndigoPinkDark" parent="MaterialDrawerTheme">
|
||||
@ -113,6 +127,8 @@
|
||||
<item name="android:textColorPrimary">@color/md_white_1000</item>
|
||||
<item name="android:textColorSecondary">@color/md_grey_600</item>
|
||||
<item name="material_drawer_header_selection_text">@color/md_grey_900</item>
|
||||
|
||||
<item name="toolbarPopupTheme">@style/ThemeOverlay.AppCompat.Dark</item>
|
||||
</style>
|
||||
|
||||
<style name="NoBarRedTeal" parent="MaterialDrawerTheme.Light">
|
||||
@ -125,6 +141,8 @@
|
||||
<item name="android:textColorPrimary">@color/md_grey_900</item>
|
||||
<item name="android:textColorSecondary">@color/md_grey_400</item>
|
||||
<item name="material_drawer_header_selection_text">@color/md_grey_900</item>
|
||||
|
||||
<item name="toolbarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
|
||||
</style>
|
||||
|
||||
<style name="NoBarRedTealDark" parent="MaterialDrawerTheme">
|
||||
@ -138,6 +156,8 @@
|
||||
<item name="android:textColorPrimary">@color/md_white_1000</item>
|
||||
<item name="android:textColorSecondary">@color/md_grey_600</item>
|
||||
<item name="material_drawer_header_selection_text">@color/md_grey_900</item>
|
||||
|
||||
<item name="toolbarPopupTheme">@style/ThemeOverlay.AppCompat.Dark</item>
|
||||
</style>
|
||||
|
||||
<style name="NoBarCyanPink" parent="MaterialDrawerTheme.Light">
|
||||
@ -150,6 +170,8 @@
|
||||
<item name="android:textColorPrimary">@color/md_grey_900</item>
|
||||
<item name="android:textColorSecondary">@color/md_grey_400</item>
|
||||
<item name="material_drawer_header_selection_text">@color/md_grey_900</item>
|
||||
|
||||
<item name="toolbarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
|
||||
</style>
|
||||
|
||||
<style name="NoBarCyanPinkDark" parent="MaterialDrawerTheme">
|
||||
@ -163,6 +185,8 @@
|
||||
<item name="android:textColorPrimary">@color/md_white_1000</item>
|
||||
<item name="android:textColorSecondary">@color/md_grey_600</item>
|
||||
<item name="material_drawer_header_selection_text">@color/md_grey_900</item>
|
||||
|
||||
<item name="toolbarPopupTheme">@style/ThemeOverlay.AppCompat.Dark</item>
|
||||
</style>
|
||||
|
||||
|
||||
@ -176,6 +200,8 @@
|
||||
<item name="android:textColorPrimary">@color/md_grey_900</item>
|
||||
<item name="android:textColorSecondary">@color/md_grey_400</item>
|
||||
<item name="material_drawer_header_selection_text">@color/md_grey_900</item>
|
||||
|
||||
<item name="toolbarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
|
||||
</style>
|
||||
|
||||
<style name="NoBarTealOrangeDark" parent="MaterialDrawerTheme">
|
||||
@ -189,6 +215,8 @@
|
||||
<item name="android:textColorPrimary">@color/md_white_1000</item>
|
||||
<item name="android:textColorSecondary">@color/md_grey_600</item>
|
||||
<item name="material_drawer_header_selection_text">@color/md_grey_900</item>
|
||||
|
||||
<item name="toolbarPopupTheme">@style/ThemeOverlay.AppCompat.Dark</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.App.Light" parent="Theme.IssueReporter.Light.DarkActionBar">
|
||||
|
Reference in New Issue
Block a user