package info.justaway.settings;
import android.content.Context;
import android.content.SharedPreferences;
import com.google.gson.Gson;
import java.util.ArrayList;
import info.justaway.JustawayApplication;
public class PostStockSettings {
private JustawayApplication mApplication;
private PostStockSettingsDate mPostStockSettingsDate;
private static final String PREF_NAME = "post_settings";
private static final String PREF_KEY = "data";
private static final String DRAFT_LIST_FILE = "DraftListFile";
public PostStockSettings() {
mApplication = JustawayApplication.getApplication();
loadPostStockSettings();
}
public void loadPostStockSettings() {
// 下書きの保存の仕方を移行
SaveLoadTraining saveLoadTraining = new SaveLoadTraining(DRAFT_LIST_FILE);
ArrayList<String> draftList = saveLoadTraining.loadArray();
if (!draftList.isEmpty()) {
mPostStockSettingsDate = new PostStockSettingsDate();
mPostStockSettingsDate.hashtags = new ArrayList<String>();
mPostStockSettingsDate.drafts = draftList;
savePostStockSettings();
SharedPreferences file = mApplication.getSharedPreferences(DRAFT_LIST_FILE, 0);
file.edit().clear().commit();
}
SharedPreferences preferences = mApplication.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
String json = preferences.getString(PREF_KEY, null);
Gson gson = new Gson();
if (json != null) {
mPostStockSettingsDate = gson.fromJson(json, PostStockSettingsDate.class);
}
if (mPostStockSettingsDate == null) {
mPostStockSettingsDate = new PostStockSettingsDate();
}
if (mPostStockSettingsDate.hashtags == null) {
mPostStockSettingsDate.hashtags = new ArrayList<>();
}
if (mPostStockSettingsDate.drafts == null) {
mPostStockSettingsDate.drafts = new ArrayList<>();
}
}
public void savePostStockSettings() {
SharedPreferences preferences = mApplication.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
Gson gson = new Gson();
String exportJson = gson.toJson(mPostStockSettingsDate);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(PREF_KEY, exportJson);
editor.apply();
}
public void addHashtag(String hashtag) {
for (String existHashtag : mPostStockSettingsDate.hashtags) {
if (existHashtag.equals(hashtag)) {
return;
}
}
mPostStockSettingsDate.hashtags.add(0, hashtag);
savePostStockSettings();
}
public void removeHashtag(String hashtag) {
mPostStockSettingsDate.hashtags.remove(hashtag);
savePostStockSettings();
}
public void addDraft(String draft) {
for (String muteWord : mPostStockSettingsDate.hashtags) {
if (muteWord.equals(draft)) {
return;
}
}
mPostStockSettingsDate.drafts.add(0, draft);
savePostStockSettings();
}
public void removeDraft(String draft) {
mPostStockSettingsDate.drafts.remove(draft);
savePostStockSettings();
}
public ArrayList<String> getHashtags() {
return mPostStockSettingsDate.hashtags;
}
public ArrayList<String> getDrafts() {
return mPostStockSettingsDate.drafts;
}
public static class PostStockSettingsDate {
ArrayList<String> hashtags;
ArrayList<String> drafts;
}
/**
* SharedPreferencesにArrayListを突っ込む
*/
public class SaveLoadTraining {
private String prefsName;
private ArrayList<String> list;
public SaveLoadTraining(String prefsName) {
this.prefsName = prefsName;
}
public ArrayList<String> loadArray() {
SharedPreferences file = mApplication.getSharedPreferences(prefsName, 0);
list = new ArrayList<String>();
int size = file.getInt("list_size", 0);
for (int i = 0; i < size; i++) {
String draft = file.getString("list_" + i, null);
list.add(draft);
}
return list;
}
}
}