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 e5ea37c..76590a0 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt @@ -87,7 +87,6 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener { private var items: ArrayList = ArrayList() private var allItems: ArrayList = ArrayList() - private var clickBehavior = false private var debugReadingItems = false private var shouldLogEverything = false private var internalBrowser = false @@ -194,11 +193,6 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener { } alertDialog.show() } - - if (sharedPref.getString("acra.user.email", "").isNotEmpty()) { - sharedEditor.remove("acra.user.email") - sharedEditor.commit() - } } private fun handleSwipeRefreshLayout() { @@ -364,7 +358,6 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener { private fun handleSharedPrefs() { debugReadingItems = sharedPref.getBoolean("read_debug", false) shouldLogEverything = sharedPref.getBoolean("should_log_everything", false) - clickBehavior = sharedPref.getBoolean("tab_on_tap", false) internalBrowser = sharedPref.getBoolean("prefer_internal_browser", true) articleViewer = sharedPref.getBoolean("prefer_article_viewer", true) shouldBeCardView = sharedPref.getBoolean("card_view_active", false) @@ -664,7 +657,7 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener { if (maybeDrawerData.sources != null) { thread { val sourceEntities = - maybeDrawerData.sources.map { it.toEntity(this@HomeActivity) } + maybeDrawerData.sources.map { it.toEntity() } db.drawerDataDao().insertAllSources(*sourceEntities.toTypedArray()) } } @@ -1013,7 +1006,6 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener { items, api, customTabActivityHelper, - clickBehavior, internalBrowser, articleViewer, debugReadingItems, diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/adapters/ItemListAdapter.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/adapters/ItemListAdapter.kt index 3673ad1..107efb6 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/adapters/ItemListAdapter.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/adapters/ItemListAdapter.kt @@ -40,7 +40,6 @@ class ItemListAdapter( override var items: ArrayList, override val api: SelfossApi, private val helper: CustomTabActivityHelper, - private val clickBehavior: Boolean, private val internalBrowser: Boolean, private val articleViewer: Boolean, override val debugReadingItems: Boolean, @@ -194,37 +193,18 @@ class ItemListAdapter( val customTabsIntent = c.buildCustomTabsIntent() helper.bindCustomTabsService(app) - - if (!clickBehavior) { - mView.setOnClickListener { - c.openItemUrl( - items, - adapterPosition, - items[adapterPosition].getLinkDecoded(), - customTabsIntent, - internalBrowser, - articleViewer, - app - ) - } - mView.setOnLongClickListener { - actionBarShowHide() - true - } - } else { - mView.setOnClickListener { actionBarShowHide() } - mView.setOnLongClickListener { - c.openItemUrl( - items, - adapterPosition, - items[adapterPosition].getLinkDecoded(), - customTabsIntent, - internalBrowser, - articleViewer, - app - ) - true - } + mView.setOnClickListener { actionBarShowHide() } + mView.setOnLongClickListener { + c.openItemUrl( + items, + adapterPosition, + items[adapterPosition].getLinkDecoded(), + customTabsIntent, + internalBrowser, + articleViewer, + app + ) + true } } 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 4e2e855..0f47b92 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 @@ -125,6 +125,9 @@ class SelfossApi( ): Call> = getItems("starred", tag, sourceId, search, itemsNumber, offset) + fun allItems(): Call> = + service.allItems(userName, password) + private fun getItems( type: String, tag: String?, diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossService.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossService.kt index c57d880..553579d 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossService.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossService.kt @@ -27,6 +27,12 @@ internal interface SelfossService { @Query("offset") offset: Int ): Call> + @GET("items") + fun allItems( + @Query("username") username: String, + @Query("password") password: String + ): Call> + @Headers("Content-Type: application/x-www-form-urlencoded") @POST("mark/{id}") fun markAsRead( diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/persistence/dao/ItemsDao.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/persistence/dao/ItemsDao.kt new file mode 100644 index 0000000..fd89349 --- /dev/null +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/persistence/dao/ItemsDao.kt @@ -0,0 +1,25 @@ +package apps.amine.bou.readerforselfoss.persistence.dao + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import apps.amine.bou.readerforselfoss.persistence.entities.ItemEntity +import androidx.room.Update + + + +@Dao +interface ItemsDao { + @Query("SELECT * FROM items") + fun items(): List + + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insertAllItems(vararg tags: ItemEntity) + + @Query("DELETE FROM items") + fun deleteAllItems() + + @Update + fun updateItem(item: ItemEntity) +} \ No newline at end of file diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/persistence/database/AppDatabase.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/persistence/database/AppDatabase.kt index eccf36d..e8997da 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/persistence/database/AppDatabase.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/persistence/database/AppDatabase.kt @@ -3,6 +3,8 @@ package apps.amine.bou.readerforselfoss.persistence.database import androidx.room.RoomDatabase import androidx.room.Database import apps.amine.bou.readerforselfoss.persistence.dao.DrawerDataDao +import apps.amine.bou.readerforselfoss.persistence.dao.ItemsDao +import apps.amine.bou.readerforselfoss.persistence.entities.ItemEntity import apps.amine.bou.readerforselfoss.persistence.entities.SourceEntity import apps.amine.bou.readerforselfoss.persistence.entities.TagEntity diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/persistence/entities/ItemEntity.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/persistence/entities/ItemEntity.kt new file mode 100644 index 0000000..1feefb3 --- /dev/null +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/persistence/entities/ItemEntity.kt @@ -0,0 +1,32 @@ +package apps.amine.bou.readerforselfoss.persistence.entities + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "items") +data class ItemEntity( + @PrimaryKey + @ColumnInfo(name = "id") + val id: String, + @ColumnInfo(name = "datetime") + val datetime: String, + @ColumnInfo(name = "title") + val title: String, + @ColumnInfo(name = "content") + val content: String, + @ColumnInfo(name = "unread") + val unread: Boolean, + @ColumnInfo(name = "starred") + var starred: Boolean, + @ColumnInfo(name = "thumbnail") + val thumbnail: String, + @ColumnInfo(name = "icon") + val icon: String, + @ColumnInfo(name = "link") + val link: String, + @ColumnInfo(name = "sourcetitle") + val sourcetitle: String, + @ColumnInfo(name = "tags") + val tags: String +) \ No newline at end of file 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 6019500..ff1b573 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 @@ -152,17 +152,6 @@ public class SettingsActivity extends AppCompatPreferenceActivity { addPreferencesFromResource(R.xml.pref_general); setHasOptionsMenu(true); - SwitchPreference cardViewActive = (SwitchPreference) findPreference("card_view_active"); - final SwitchPreference tabOnTap = (SwitchPreference) findPreference("tab_on_tap"); - tabOnTap.setEnabled(!cardViewActive.isChecked()); - cardViewActive.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { - public boolean onPreferenceChange(Preference preference, Object newValue) { - boolean isEnabled = (Boolean) newValue; - tabOnTap.setEnabled(!isEnabled); - return true; - } - }); - EditTextPreference itemsNumber = (EditTextPreference) findPreference("prefer_api_items_number"); itemsNumber.getEditText().setFilters(new InputFilter[]{ new InputFilter() { diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/utils/persistence/EntitiesUtils.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/utils/persistence/EntitiesUtils.kt index d2f1416..2cad189 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/utils/persistence/EntitiesUtils.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/utils/persistence/EntitiesUtils.kt @@ -1,8 +1,9 @@ package apps.amine.bou.readerforselfoss.utils.persistence -import android.content.Context +import apps.amine.bou.readerforselfoss.api.selfoss.Item import apps.amine.bou.readerforselfoss.api.selfoss.Source import apps.amine.bou.readerforselfoss.api.selfoss.Tag +import apps.amine.bou.readerforselfoss.persistence.entities.ItemEntity import apps.amine.bou.readerforselfoss.persistence.entities.SourceEntity import apps.amine.bou.readerforselfoss.persistence.entities.TagEntity @@ -23,14 +24,14 @@ fun SourceEntity.toView(): Source = this.icon ) -fun Source.toEntity(context: Context): SourceEntity = +fun Source.toEntity(): SourceEntity = SourceEntity( this.id, this.title, this.tags, this.spout, this.error, - this.getIcon(context) + this.icon.orEmpty() ) fun Tag.toEntity(): TagEntity = @@ -38,4 +39,34 @@ fun Tag.toEntity(): TagEntity = this.tag, this.color, this.unread - ) \ No newline at end of file + ) + +fun ItemEntity.toView(): Item = + Item( + this.id, + this.datetime, + this.title, + this.content, + this.unread, + this.starred, + this.thumbnail, + this.icon, + this.link, + this.sourcetitle, + this.tags + ) + +fun Item.toEntity(): ItemEntity = + ItemEntity( + this.id, + this.datetime, + this.title, + this.content, + this.unread, + this.starred, + this.thumbnail, + this.icon, + this.link, + this.sourcetitle, + this.tags + ) \ No newline at end of file diff --git a/app/src/main/res/xml/pref_general.xml b/app/src/main/res/xml/pref_general.xml index 61ed71d..fe807fb 100644 --- a/app/src/main/res/xml/pref_general.xml +++ b/app/src/main/res/xml/pref_general.xml @@ -78,11 +78,5 @@ android:title="@string/pref_general_category_actions"> -