package com.example.wiimmterfaceandroid.viewmodel; import android.app.Application; import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.MutableLiveData; import com.example.wiimmterfaceandroid.database.AppDatabase; import com.example.wiimmterfaceandroid.model.FriendCode; import androidx.databinding.ObservableArrayList; import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; import androidx.room.Room; import androidx.room.RoomDatabase; import androidx.databinding.ObservableArrayList; public class FriendCodeViewModel extends AndroidViewModel { ObservableArrayList entries = new ObservableArrayList<>(); MutableLiveData saving = new MutableLiveData<>(); MutableLiveData currentEntry = new MutableLiveData<>(); AppDatabase db; public FriendCodeViewModel(Application app) { super(app); saving.setValue(false); db = Room.databaseBuilder(app, AppDatabase.class, "fc-database").build(); new Thread(() -> { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } entries.addAll(db.getFriendCodeDao().getAll()); }).start(); } public void setCurrentEntry(FriendCode entry) { currentEntry.postValue(entry); } public MutableLiveData getCurrentEntry() { return currentEntry; } public MutableLiveData getSaving() { return saving; } public ObservableArrayList getEntries() { return entries; } public void saveFriendCode(String name, String friendCode) { saving.setValue(true); new Thread(() -> { if (currentEntry.getValue() != null) { FriendCode current = currentEntry.getValue(); current.name = name; current.friendCode = friendCode; db.getFriendCodeDao().update(current); int index = entries.indexOf(current); entries.set(index, current); } else { FriendCode newEntry = new FriendCode(); newEntry.name = name; newEntry.friendCode = friendCode; entries.add(newEntry); } saving.postValue(false); }).start(); } public void deleteEntry(FriendCode entry) { new Thread(() -> { db.getFriendCodeDao().delete(entry); entries.remove(entry); }).start(); } }