This repository has been archived on 2025-01-25. You can view files and clone it, but cannot push or open issues or pull requests.
wiimmfi-watcher/app/src/main/java/com/example/wiimmterfaceandroid/viewmodel/FriendCodeViewModel.java

82 lines
2.8 KiB
Java

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<FriendCode> entries = new ObservableArrayList<>();
MutableLiveData<Boolean> saving = new MutableLiveData<>();
MutableLiveData<FriendCode> 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<FriendCode> getCurrentEntry() {
return currentEntry;
}
public MutableLiveData<Boolean> getSaving() {
return saving;
}
public ObservableArrayList<FriendCode> 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();
}
}