From eb5b4787edb3f46795155131e28cf32f16df7146 Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 9 Apr 2021 23:38:32 +0900 Subject: [PATCH] add servers to the new database --- .../main/java/com/dkanada/gramophone/App.java | 1 + .../gramophone/activities/LoginActivity.java | 9 ++--- .../gramophone/activities/SplashActivity.java | 8 +++-- .../gramophone/database/JellyDatabase.java | 18 ++++++++-- .../gramophone/database/ServerDao.java | 21 ++++++++++++ .../com/dkanada/gramophone/model/Server.java | 34 +++++++++++++++++++ .../gramophone/util/PreferenceUtil.java | 22 ------------ 7 files changed, 82 insertions(+), 31 deletions(-) create mode 100644 app/src/main/java/com/dkanada/gramophone/database/ServerDao.java create mode 100644 app/src/main/java/com/dkanada/gramophone/model/Server.java diff --git a/app/src/main/java/com/dkanada/gramophone/App.java b/app/src/main/java/com/dkanada/gramophone/App.java index b82b2bcf..ee8ffa76 100644 --- a/app/src/main/java/com/dkanada/gramophone/App.java +++ b/app/src/main/java/com/dkanada/gramophone/App.java @@ -53,6 +53,7 @@ public class App extends Application { public static JellyDatabase createDatabase(Context context) { return Room.databaseBuilder(context, JellyDatabase.class, "database") .allowMainThreadQueries() + .addMigrations(JellyDatabase.Migration2) .build(); } diff --git a/app/src/main/java/com/dkanada/gramophone/activities/LoginActivity.java b/app/src/main/java/com/dkanada/gramophone/activities/LoginActivity.java index a135af19..b1279070 100644 --- a/app/src/main/java/com/dkanada/gramophone/activities/LoginActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/activities/LoginActivity.java @@ -14,6 +14,7 @@ import com.dkanada.gramophone.App; import com.dkanada.gramophone.R; import com.dkanada.gramophone.databinding.ActivityLoginBinding; import com.dkanada.gramophone.activities.base.AbsBaseActivity; +import com.dkanada.gramophone.model.Server; import com.dkanada.gramophone.util.PreferenceUtil; import com.kabouzeid.appthemehelper.ThemeStore; @@ -117,14 +118,14 @@ public class LoginActivity extends AbsBaseActivity implements View.OnClickListen }); } - private void check(String server, String user, String token) { + private void check(String url, String user, String token) { App.getApiClient().GetSystemInfoAsync(new Response() { @Override public void onResponse(SystemInfo result) { if (result.getVersion().charAt(0) == '1') { - PreferenceUtil.getInstance(LoginActivity.this).setServer(server); - PreferenceUtil.getInstance(LoginActivity.this).setUser(user); - PreferenceUtil.getInstance(LoginActivity.this).setToken(token); + Server server = new Server(result.getServerName(), url, user, token); + PreferenceUtil.getInstance(LoginActivity.this).setServer(server.id); + App.getDatabase().serverDao().insertServer(server); Intent intent = new Intent(LoginActivity.this, SplashActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); diff --git a/app/src/main/java/com/dkanada/gramophone/activities/SplashActivity.java b/app/src/main/java/com/dkanada/gramophone/activities/SplashActivity.java index 079bc54e..1bf76e70 100644 --- a/app/src/main/java/com/dkanada/gramophone/activities/SplashActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/activities/SplashActivity.java @@ -13,6 +13,7 @@ import androidx.annotation.RequiresApi; import com.dkanada.gramophone.App; import com.dkanada.gramophone.R; import com.dkanada.gramophone.activities.base.AbsBaseActivity; +import com.dkanada.gramophone.model.Server; import com.dkanada.gramophone.util.PreferenceUtil; import org.jellyfin.apiclient.interaction.EmptyResponse; @@ -75,13 +76,14 @@ public class SplashActivity extends AbsBaseActivity { } public void login() { - if (PreferenceUtil.getInstance(this).getToken() == null) { + if (PreferenceUtil.getInstance(this).getServer().isEmpty()) { launchLoginActivity(); } else { final Context context = this; + Server server = App.getDatabase().serverDao().getServer(PreferenceUtil.getInstance(this).getServer()); - App.getApiClient().ChangeServerLocation(PreferenceUtil.getInstance(this).getServer()); - App.getApiClient().SetAuthenticationInfo(PreferenceUtil.getInstance(this).getToken(), PreferenceUtil.getInstance(this).getUser()); + App.getApiClient().ChangeServerLocation(server.url); + App.getApiClient().SetAuthenticationInfo(server.token, server.user); App.getApiClient().GetSystemInfoAsync(new Response() { @Override public void onResponse(SystemInfo result) { diff --git a/app/src/main/java/com/dkanada/gramophone/database/JellyDatabase.java b/app/src/main/java/com/dkanada/gramophone/database/JellyDatabase.java index 1c8706c6..dbee38f3 100644 --- a/app/src/main/java/com/dkanada/gramophone/database/JellyDatabase.java +++ b/app/src/main/java/com/dkanada/gramophone/database/JellyDatabase.java @@ -1,18 +1,32 @@ package com.dkanada.gramophone.database; +import androidx.annotation.NonNull; import androidx.room.RoomDatabase; +import androidx.room.migration.Migration; +import androidx.sqlite.db.SupportSQLiteDatabase; +import com.dkanada.gramophone.model.Server; import com.dkanada.gramophone.model.Song; @androidx.room.Database( entities = { Song.class, - QueueSong.class + QueueSong.class, + Server.class }, - version = 1, + version = 2, exportSchema = false ) public abstract class JellyDatabase extends RoomDatabase { public abstract QueueSongDao queueSongDao(); public abstract SongDao songDao(); + public abstract ServerDao serverDao(); + + public static final Migration Migration2 = new Migration(1, 2) { + @Override + public void migrate(@NonNull SupportSQLiteDatabase database) { + database.execSQL("CREATE TABLE servers (id TEXT NOT NULL PRIMARY KEY, name TEXT," + + "url TEXT, user TEXT, token TEXT)"); + } + }; } diff --git a/app/src/main/java/com/dkanada/gramophone/database/ServerDao.java b/app/src/main/java/com/dkanada/gramophone/database/ServerDao.java new file mode 100644 index 00000000..a210ed3e --- /dev/null +++ b/app/src/main/java/com/dkanada/gramophone/database/ServerDao.java @@ -0,0 +1,21 @@ +package com.dkanada.gramophone.database; + +import androidx.room.Dao; +import androidx.room.Delete; +import androidx.room.Insert; +import androidx.room.OnConflictStrategy; +import androidx.room.Query; + +import com.dkanada.gramophone.model.Server; + +@Dao +public interface ServerDao { + @Insert(onConflict = OnConflictStrategy.REPLACE) + void insertServer(Server server); + + @Delete + void deleteServer(Server server); + + @Query("SELECT * FROM servers WHERE id = :id") + Server getServer(String id); +} diff --git a/app/src/main/java/com/dkanada/gramophone/model/Server.java b/app/src/main/java/com/dkanada/gramophone/model/Server.java new file mode 100644 index 00000000..03617092 --- /dev/null +++ b/app/src/main/java/com/dkanada/gramophone/model/Server.java @@ -0,0 +1,34 @@ +package com.dkanada.gramophone.model; + +import androidx.annotation.NonNull; +import androidx.room.Entity; +import androidx.room.PrimaryKey; + +import java.util.UUID; + +@Entity(tableName = "servers") +public class Server { + @NonNull + @PrimaryKey + public String id; + + public String name; + public String url; + + public String user; + public String token; + + public Server() { + this.id = UUID.randomUUID().toString(); + } + + public Server(String name, String url, String user, String token) { + this.id = UUID.randomUUID().toString(); + + this.name = name; + this.url = url; + + this.user = user; + this.token = token; + } +} diff --git a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java index da2ff95f..a3889f1b 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java @@ -25,8 +25,6 @@ import java.util.Set; public final class PreferenceUtil { public static final String SERVER = "server"; - public static final String USER = "user"; - public static final String TOKEN = "token"; public static final String SHUFFLE = "shuffle"; public static final String REPEAT = "repeat"; @@ -476,24 +474,4 @@ public final class PreferenceUtil { editor.putString(SERVER, server); editor.apply(); } - - public String getUser() { - return mPreferences.getString(USER, ""); - } - - public void setUser(String user) { - final SharedPreferences.Editor editor = mPreferences.edit(); - editor.putString(USER, user); - editor.apply(); - } - - public String getToken() { - return mPreferences.getString(TOKEN, ""); - } - - public void setToken(String token) { - final SharedPreferences.Editor editor = mPreferences.edit(); - editor.putString(TOKEN, token); - editor.apply(); - } }