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:
Levi Bard 2018-04-22 10:35:46 +02:00 committed by Konrad Pozniak
commit e2adddf7b8
8 changed files with 154 additions and 41 deletions

View file

@ -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`;");
}
};
}

View file

@ -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?
}

View file

@ -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 {