Support prefers backup

pull/171/head
FongMi 2 years ago
parent a262b40868
commit 1b2deaee16
  1. 4
      app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java
  2. 21
      catvod/src/main/java/com/github/catvod/utils/Prefers.java

@ -25,6 +25,7 @@ import com.fongmi.android.tv.db.dao.SiteDao;
import com.fongmi.android.tv.db.dao.TrackDao;
import com.fongmi.android.tv.utils.Util;
import com.github.catvod.utils.Path;
import com.github.catvod.utils.Prefers;
import java.io.File;
import java.text.SimpleDateFormat;
@ -57,6 +58,7 @@ public abstract class AppDatabase extends RoomDatabase {
if (db.exists()) Path.copy(db, new File(Path.tv(), db.getName()));
if (wal.exists()) Path.copy(wal, new File(Path.tv(), wal.getName()));
if (shm.exists()) Path.copy(shm, new File(Path.tv(), shm.getName()));
Prefers.backup(new File(Path.tv(), NAME + "-pref"));
App.post(callback::success);
});
}
@ -66,9 +68,11 @@ public abstract class AppDatabase extends RoomDatabase {
File db = new File(Path.tv(), NAME);
File wal = new File(Path.tv(), NAME + "-wal");
File shm = new File(Path.tv(), NAME + "-shm");
File pref = new File(Path.tv(), NAME + "-pref");
if (db.exists()) Path.move(db, App.get().getDatabasePath(db.getName()).getAbsoluteFile());
if (wal.exists()) Path.move(wal, App.get().getDatabasePath(wal.getName()).getAbsoluteFile());
if (shm.exists()) Path.move(shm, App.get().getDatabasePath(shm.getName()).getAbsoluteFile());
if (pref.exists()) Prefers.restore(pref);
App.post(callback::success);
});
}

@ -5,6 +5,14 @@ import android.content.SharedPreferences;
import androidx.preference.PreferenceManager;
import com.github.catvod.Init;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.ToNumberPolicy;
import com.google.gson.internal.LazilyParsedNumber;
import com.google.gson.reflect.TypeToken;
import java.io.File;
import java.util.Map;
public class Prefers {
@ -12,6 +20,17 @@ public class Prefers {
return PreferenceManager.getDefaultSharedPreferences(Init.context());
}
public static void backup(File file) {
Path.write(file, new Gson().toJson(getPrefers().getAll()).getBytes());
}
public static void restore(File file) {
Gson gson = new GsonBuilder().setObjectToNumberStrategy(ToNumberPolicy.LAZILY_PARSED_NUMBER).create();
Map<String, Object> map = gson.fromJson(Path.read(file), new TypeToken<Map<String, Object>>() {}.getType());
if (map != null) for (Map.Entry<String, ?> entry : map.entrySet()) Prefers.put(entry.getKey(), entry.getValue());
Path.clear(file);
}
public static String getString(String key) {
return getString(key, "");
}
@ -48,6 +67,8 @@ public class Prefers {
getPrefers().edit().putInt(key, (Integer) obj).apply();
} else if (obj instanceof Long) {
getPrefers().edit().putLong(key, (Long) obj).apply();
} else if (obj instanceof LazilyParsedNumber) {
getPrefers().edit().putInt(key, ((LazilyParsedNumber) obj).intValue()).apply();
}
}

Loading…
Cancel
Save