Query instance for toot character limit (#571)
* Query instance for toot character limit Fixes #393 * Move maximumTootCharacters to instance field * Add caching for maximum toot characters, expanding on the emoji list storage * Update formatting per review feedback * Fix compose activity tests * Rename mastodon api point for nicer interaction with kotlin * Default emoji list to empty list instead of null, to appease json converters in failure cases * Use empty list helper * Fix database migration
This commit is contained in:
parent
797132a643
commit
e2adddf7b8
8 changed files with 154 additions and 41 deletions
|
|
@ -25,12 +25,12 @@ import android.support.annotation.NonNull;
|
|||
* DB version & declare DAO
|
||||
*/
|
||||
|
||||
@Database(entities = {TootEntity.class, AccountEntity.class, EmojiListEntity.class}, version = 6, exportSchema = false)
|
||||
@Database(entities = {TootEntity.class, AccountEntity.class, InstanceEntity.class}, version = 7, exportSchema = false)
|
||||
public abstract class AppDatabase extends RoomDatabase {
|
||||
|
||||
public abstract TootDao tootDao();
|
||||
public abstract AccountDao accountDao();
|
||||
public abstract EmojiListDao emojiListDao();
|
||||
public abstract InstanceDao instanceDao();
|
||||
|
||||
public static final Migration MIGRATION_2_3 = new Migration(2, 3) {
|
||||
@Override
|
||||
|
|
@ -82,4 +82,13 @@ public abstract class AppDatabase extends RoomDatabase {
|
|||
database.execSQL("CREATE TABLE IF NOT EXISTS `EmojiListEntity` (`instance` TEXT NOT NULL, `emojiList` TEXT NOT NULL, PRIMARY KEY(`instance`))");
|
||||
}
|
||||
};
|
||||
|
||||
public static final Migration MIGRATION_6_7 = new Migration(6, 7) {
|
||||
@Override
|
||||
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
||||
database.execSQL("CREATE TABLE IF NOT EXISTS `InstanceEntity` (`instance` TEXT NOT NULL, `emojiList` TEXT, `maximumTootCharacters` INTEGER, PRIMARY KEY(`instance`))");
|
||||
database.execSQL("INSERT OR REPLACE INTO `InstanceEntity` SELECT `instance`,`emojiList`,NULL FROM `EmojiListEntity`;");
|
||||
database.execSQL("DROP TABLE `EmojiListEntity`;");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
@ -21,11 +21,10 @@ import android.arch.persistence.room.OnConflictStrategy
|
|||
import android.arch.persistence.room.Query
|
||||
|
||||
@Dao
|
||||
interface EmojiListDao {
|
||||
interface InstanceDao {
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
fun insertOrReplace(emojiList: EmojiListEntity)
|
||||
|
||||
@Query("SELECT * FROM EmojiListEntity WHERE instance = :instance LIMIT 1")
|
||||
fun loadEmojisForInstance(instance: String): EmojiListEntity?
|
||||
fun insertOrReplace(instance: InstanceEntity)
|
||||
|
||||
@Query("SELECT * FROM InstanceEntity WHERE instance = :instance LIMIT 1")
|
||||
fun loadMetadataForInstance(instance: String): InstanceEntity?
|
||||
}
|
||||
|
|
@ -25,8 +25,10 @@ import com.keylesspalace.tusky.entity.Emoji
|
|||
|
||||
@Entity
|
||||
@TypeConverters(Converters::class)
|
||||
data class EmojiListEntity(@field:PrimaryKey var instance: String,
|
||||
val emojiList: List<Emoji>)
|
||||
data class InstanceEntity(
|
||||
@field:PrimaryKey var instance: String,
|
||||
val emojiList: List<Emoji>?,
|
||||
val maximumTootCharacters: Int?)
|
||||
|
||||
|
||||
class Converters {
|
||||
Loading…
Add table
Add a link
Reference in a new issue