Skip to content

Commit 7bde151

Browse files
Fix note creating
Signed-off-by: tobiasKaminsky <[email protected]>
1 parent 9dde22a commit 7bde151

File tree

4 files changed

+55
-17
lines changed

4 files changed

+55
-17
lines changed

app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,13 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
110110
}
111111

112112
requireActivity().runOnUiThread(() -> {
113-
onNoteLoaded(note);
113+
Log.v("createAndLoadNote", "oldNote: id: " + note.getId() + " remote: " + note.getRemoteId());
114+
Note updatedNote = repo.getNoteById$(note.getId()).getValue();
115+
if (updatedNote != null) {
116+
note = updatedNote;
117+
}
118+
Log.v("createAndLoadNote", "updatedNote: id: " + note.getId() + " remote: " + note.getRemoteId());
119+
onNoteLoaded(note); // TODO update note
114120
requireActivity().invalidateOptionsMenu();
115121

116122
if (listener != null) {

app/src/main/java/it/niedermann/owncloud/notes/edit/NoteDirectEditFragment.kt

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ import it.niedermann.owncloud.notes.shared.model.ApiVersion
4545
import it.niedermann.owncloud.notes.shared.model.ISyncCallback
4646
import it.niedermann.owncloud.notes.shared.util.ExtendedFabUtil
4747
import it.niedermann.owncloud.notes.shared.util.rx.DisposableSet
48-
import okio.IOException
4948
import java.util.concurrent.TimeUnit
5049

5150
class NoteDirectEditFragment : BaseNoteFragment(), Branded {
@@ -155,29 +154,56 @@ class NoteDirectEditFragment : BaseNoteFragment(), Branded {
155154
return
156155
}
157156

158-
Log.d(TAG, "onNoteLoaded() called")
157+
Log.d("createAndLoadNote", "onNoteLoaded() called")
159158
val newNoteParam = arguments?.getSerializable(PARAM_NEWNOTE) as Note?
160-
if (newNoteParam != null || note.remoteId == null) {
161-
createAndLoadNote(note)
162-
} else {
163-
loadNoteInWebView(note)
159+
Log.v(
160+
"createAndLoadNote",
161+
"on note loaded: newNote null: ${newNoteParam == null}; remoteId: ${note.remoteId}"
162+
)
163+
164+
if (repo.isSyncPossible) {
165+
val acc = repo.getAccountByName(account.name)
166+
repo.scheduleSync(acc, false)
167+
168+
// todo wait until sync is done, how?
169+
repo.syncStatus.observe(this) { state: Boolean ->
170+
if (!state) {
171+
// update note
172+
val updatedNote = repo.getNoteById(note.id)
173+
174+
Log.v(
175+
"createAndLoadNote",
176+
"on note loaded: updatedNote null : ${newNoteParam == null}; remoteId: ${note.remoteId}"
177+
)
178+
179+
//if (updatedNote != null || updatedNote?.remoteId == null) {
180+
// createAndLoadNote(note)
181+
//} else {
182+
loadNoteInWebView(updatedNote)
183+
//}
184+
}
185+
}
186+
Log.v("createAndLoadNote", "sync started")
164187
}
165188
}
166189

190+
191+
// TODO test with a real, 'slow" server!
167192
private fun createAndLoadNote(newNote: Note) {
168-
Log.d(TAG, "createAndLoadNote() called")
193+
Log.d("createAndLoadNote", "createAndLoadNote() called with internal id: ${newNote.id}")
169194
val noteCreateDisposable = Single
170195
.fromCallable {
171196
try {
172197
val response = notesApi.createNote(newNote).execute()
173198
response.body()
174-
} catch (e: IOException) {
175-
Log_OC.w(TAG, "Cant able to create a note: $e")
199+
} catch (e: Exception) {
200+
Log_OC.w("createAndLoadNote", "Cant able to create a note: $e")
176201
null
177202
}
178203
}
179204
.flatMap { createdNote ->
180-
createdNote?.let {
205+
createdNote.let {
206+
Log_OC.d("createAndLoadNote", "created note on server: ${it.remoteId}")
181207
repo.updateRemoteId(newNote.id, it.remoteId)
182208
Single.fromCallable { repo.getNoteById(newNote.id) }
183209
}
@@ -189,7 +215,7 @@ class NoteDirectEditFragment : BaseNoteFragment(), Branded {
189215
}, { throwable ->
190216
note = null
191217
handleLoadError()
192-
Log.e(TAG, "createAndLoadNote:", throwable)
218+
Log.e("createAndLoadNote", "createAndLoadNote:", throwable)
193219
})
194220
disposables.add(noteCreateDisposable)
195221
}

app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
@SuppressWarnings("UnusedReturnValue")
9292
public class NotesRepository {
9393

94-
private static final String TAG = NotesRepository.class.getSimpleName();
94+
private static final String TAG = "createAndLoadNote";
9595

9696
private static NotesRepository instance;
9797

app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesServerSyncTask.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public void run() {
114114
* Push local changes: for each locally created/edited/deleted Note, use NotesClient in order to push the changed to the server.
115115
*/
116116
private boolean pushLocalChanges() {
117-
Log.d(TAG, "pushLocalChanges()");
117+
Log.d("createAndLoadNote", "pushLocalChanges()");
118118

119119
boolean success = true;
120120
final var notes = repo.getLocalModifiedNotes(localAccount.getId());
@@ -135,7 +135,7 @@ private boolean pushLocalChanges() {
135135
throw new Exception("Server returned null after editing \"" + note.getTitle() + "\" (#" + note.getId() + ")");
136136
}
137137
} else if (editResponse.code() == HTTP_NOT_FOUND) {
138-
Log.v(TAG, " ...Note does no longer exist on server → recreate");
138+
Log.v("createAndLoadNote", " ...Note does no longer exist on server → recreate");
139139
final var createResponse = notesAPI.createNote(note).execute();
140140
if (createResponse.isSuccessful()) {
141141
remoteNote = createResponse.body();
@@ -150,16 +150,22 @@ private boolean pushLocalChanges() {
150150
throw new Exception(editResponse.message());
151151
}
152152
} else {
153-
Log.v(TAG, " ...Note does not have a remoteId yet → create");
153+
Log.v("createAndLoadNote", " ...Note does not have a remoteId yet → create");
154154
final var createResponse = notesAPI.createNote(note).execute();
155155
if (createResponse.isSuccessful()) {
156156
remoteNote = createResponse.body();
157157
if (remoteNote == null) {
158-
Log.e(TAG, " ...Tried to create \"" + note.getTitle() + "\" (#" + note.getId() + ") but the server response was null.");
158+
Log.e("createAndLoadNote", " ...Tried to create \"" + note.getTitle() + "\" (#" + note.getId() + ") but the server response was null.");
159159
throw new Exception("Server returned null after creating \"" + note.getTitle() + "\" (#" + note.getId() + ")");
160+
160161
}
162+
Log.v("createAndLoadNote", "remoteNote remoteId: " + remoteNote.getRemoteId());
163+
Log.v("createAndLoadNote", "internal id: " + note.getId() + " remote: " + note.getRemoteId());
161164
repo.updateRemoteId(note.getId(), remoteNote.getRemoteId());
165+
Note updatedNote = repo.getNoteById(note.getId());
166+
Log.v("createAndLoadNote", "internal id: " + updatedNote.getId() + " remote: " + updatedNote.getRemoteId());
162167
} else {
168+
Log.v("createAndLoadNote", "create failed: " + createResponse.message());
163169
throw new Exception(createResponse.message());
164170
}
165171
}

0 commit comments

Comments
 (0)