diff --git a/app/build.gradle b/app/build.gradle index 46db1be3b..ae008c98e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -59,6 +59,5 @@ dependencies { //room compile "android.arch.persistence.room:runtime:1.0.0-alpha3" annotationProcessor "android.arch.persistence.room:compiler:1.0.0-alpha3" - compile "android.arch.persistence.room:rxjava2:1.0.0-alpha2" } diff --git a/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java b/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java index 1ed2255e2..77f72416b 100644 --- a/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java @@ -153,7 +153,7 @@ public class ComposeActivity extends BaseActivity implements ComposeOptionsFragm private InputContentInfoCompat currentInputContentInfo; private int currentFlags; private Uri photoUploadUri; - + private int savedTootUid = 0; /** * The Target object must be stored as a member field or method and cannot be an anonymous class otherwise this won't work as expected. The reason is that Picasso accepts this parameter as a weak memory reference. Because anonymous classes are eligible for garbage collection when there are no more references, the network request to fetch the image may finish after this anonymous class has already been reclaimed. See this Stack Overflow discussion for more details. @@ -308,8 +308,12 @@ public class ComposeActivity extends BaseActivity implements ComposeOptionsFragm // try to redo a list of media ArrayList playersList = new Gson().fromJson(savedJsonUrls, new TypeToken>() { - }.getType()); + }.getType()); + } + int savedTootUid = intent.getIntExtra("saved_toot_uid", 0); + if (savedTootUid != 0) { + this.savedTootUid = savedTootUid; } } @@ -545,7 +549,12 @@ public class ComposeActivity extends BaseActivity implements ComposeOptionsFragm new AsyncTask() { @Override protected Void doInBackground(Void... params) { - tootDao.insert(toot); + if (savedTootUid != 0) { + toot.setUid(savedTootUid); + tootDao.updateToot(toot); + } else { + tootDao.insert(toot); + } return null; } }.execute(); diff --git a/app/src/main/java/com/keylesspalace/tusky/SavedTootActivity.java b/app/src/main/java/com/keylesspalace/tusky/SavedTootActivity.java index 88560dab2..385fa52e1 100644 --- a/app/src/main/java/com/keylesspalace/tusky/SavedTootActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/SavedTootActivity.java @@ -72,6 +72,12 @@ public class SavedTootActivity extends BaseActivity implements SavedTootAdapter. adapter = new SavedTootAdapter(this); recyclerView.setAdapter(adapter); + } + + @Override + protected void onResume() { + super.onResume(); + // req getAllToot(); } @@ -99,7 +105,10 @@ public class SavedTootActivity extends BaseActivity implements SavedTootAdapter. super.onPostExecute(tootEntities); // set ui setNoContent(tootEntities.size()); - adapter.addItems(tootEntities); + if (adapter != null) { + adapter.setItems(tootEntities); + adapter.notifyDataSetChanged(); + } } }.execute(); } @@ -126,6 +135,7 @@ public class SavedTootActivity extends BaseActivity implements SavedTootAdapter. @Override public void click(int position, TootEntity item) { Intent intent = new Intent(this, ComposeActivity.class); + intent.putExtra("saved_toot_uid", item.getUid()); intent.putExtra("saved_toot_text", item.getText()); intent.putExtra("saved_json_urls", item.getUrls()); startActivity(intent); diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/SavedTootAdapter.java b/app/src/main/java/com/keylesspalace/tusky/adapter/SavedTootAdapter.java index 3db08bc0c..12a554672 100644 --- a/app/src/main/java/com/keylesspalace/tusky/adapter/SavedTootAdapter.java +++ b/app/src/main/java/com/keylesspalace/tusky/adapter/SavedTootAdapter.java @@ -59,6 +59,11 @@ public class SavedTootAdapter extends RecyclerView.Adapter { return list.size(); } + public void setItems(List newToot) { + list = new ArrayList<>(); + list.addAll(newToot); + } + public void addItems(List newToot) { int end = list.size(); list.addAll(newToot); diff --git a/app/src/main/java/com/keylesspalace/tusky/db/TootDao.java b/app/src/main/java/com/keylesspalace/tusky/db/TootDao.java index 19461984a..b3779af52 100644 --- a/app/src/main/java/com/keylesspalace/tusky/db/TootDao.java +++ b/app/src/main/java/com/keylesspalace/tusky/db/TootDao.java @@ -3,6 +3,7 @@ package com.keylesspalace.tusky.db; import android.arch.persistence.room.Dao; import android.arch.persistence.room.Delete; import android.arch.persistence.room.Insert; +import android.arch.persistence.room.OnConflictStrategy; import android.arch.persistence.room.Query; import android.arch.persistence.room.Update; @@ -23,12 +24,9 @@ public interface TootDao { @Query("SELECT * FROM TootEntity") List loadAll(); - @Query("SELECT * FROM TootEntity WHERE uid IN (:uid)") - List loadAllByTootId(int... uid); - // u @Update - void updateToot(TootEntity... toot); + void updateToot(TootEntity toot); // d @Delete