Skip to content

Commit c2673c5

Browse files
Sharing fixes
Signed-off-by: tobiasKaminsky <[email protected]>
1 parent 1307684 commit c2673c5

File tree

5 files changed

+47
-19
lines changed

5 files changed

+47
-19
lines changed

app/src/main/java/it/niedermann/owncloud/notes/persistence/sync/ShareAPI.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,6 @@ interface ShareAPI {
6767
@GET("shares/?format=json")
6868
fun getShareFromNote(
6969
@Query("path") path: String,
70-
@Query("shared_with_me") sharedWithMe: Boolean = true
70+
@Query("shared_with_me") sharedWithMe: Boolean = false
7171
): Call<OcsResponse<List<CreateShareResponse>>>
7272
}

app/src/main/java/it/niedermann/owncloud/notes/share/NoteShareActivity.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -347,11 +347,21 @@ private void setShareWithYou() {
347347
return;
348348
}
349349

350-
final var share = shares.get(0);
350+
OCShare share = null;
351+
for (OCShare s : shares) {
352+
if (account.getAccountName().split("@")[0].equalsIgnoreCase(s.getShareWith())) {
353+
share = s;
354+
break;
355+
}
356+
}
351357

358+
if (share == null) {
359+
return;
360+
}
361+
352362
binding.sharedWithYouUsername.setText(
353363
String.format(getString(R.string.note_share_activity_shared_with_you), share.getOwnerDisplayName()));
354-
AvatarLoader.INSTANCE.load(this, binding.sharedWithYouAvatar, account);
364+
AvatarLoader.INSTANCE.load(this, binding.sharedWithYouAvatar, account, share.getUserId());
355365
binding.sharedWithYouAvatar.setVisibility(View.VISIBLE);
356366

357367
String description = share.getNote();
@@ -362,6 +372,8 @@ private void setShareWithYou() {
362372
} else {
363373
binding.sharedWithYouNoteContainer.setVisibility(View.GONE);
364374
}
375+
376+
binding.sharedWithYouContainer.setVisibility(View.VISIBLE);
365377
}
366378
}
367379

@@ -530,10 +542,8 @@ private void populateSharesList(List<OCShare> targetList) {
530542

531543
// Get shares from remote
532544
final var remoteShares = repository.getShareFromNote(note);
533-
if (remoteShares != null) {
534-
for (var entity : remoteShares) {
535-
addSharesToList(entity.getId(), targetList);
536-
}
545+
for (var entity : remoteShares) {
546+
addSharesToList(entity.getId(), targetList);
537547
}
538548
}
539549

app/src/main/java/it/niedermann/owncloud/notes/share/adapter/ShareeListAdapter.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,11 @@ protected final void sortShares() {
208208
List<OCShare> users = new ArrayList<>();
209209

210210
for (OCShare share : shares) {
211+
if (share.getShareWith().equalsIgnoreCase(account.getAccountName().split("@")[0])) {
212+
// this is then an incoming share, shown via "shared with you"
213+
continue;
214+
}
215+
211216
if (share.getShareType() != null) {
212217
if (ShareType.PUBLIC_LINK == share.getShareType() || ShareType.EMAIL == share.getShareType()) {
213218
links.add(share);

app/src/main/java/it/niedermann/owncloud/notes/share/adapter/holder/ShareViewHolder.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public void bind(OCShare share, ShareeListAdapterListener listener) {
7474
binding.icon.setTag(share.getShareWith());
7575

7676
if (share.getSharedWithDisplayName() != null) {
77-
AvatarLoader.INSTANCE.load(context, binding.icon, account, share.getSharedWithDisplayName());
77+
AvatarLoader.INSTANCE.load(context, binding.icon, account, share.getShareWith());
7878
}
7979

8080
// binding.icon.setOnClickListener(v -> listener.showProfileBottomSheet(user, share.getShareWith()));
@@ -90,7 +90,9 @@ public void bind(OCShare share, ShareeListAdapterListener listener) {
9090
return;
9191
}
9292

93-
if (accountName.equalsIgnoreCase(share.getShareWith()) || accountName.equalsIgnoreCase(share.getUserId())) {
93+
if (accountName.equalsIgnoreCase(share.getShareWith()) && accountName.equalsIgnoreCase(share.getUserId())) {
94+
binding.overflowMenu.setVisibility(View.GONE);
95+
} else {
9496
binding.overflowMenu.setVisibility(View.VISIBLE);
9597

9698
String permissionName = SharingMenuHelper.getPermissionName(context, share);
@@ -99,8 +101,6 @@ public void bind(OCShare share, ShareeListAdapterListener listener) {
99101
// bind listener to edit privileges
100102
binding.overflowMenu.setOnClickListener(v -> listener.showSharingMenuActionSheet(share));
101103
binding.shareNameLayout.setOnClickListener(v -> listener.showPermissionsDialog(share));
102-
} else {
103-
binding.overflowMenu.setVisibility(View.GONE);
104104
}
105105
}
106106

app/src/main/java/it/niedermann/owncloud/notes/share/repository/ShareRepository.kt

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import it.niedermann.owncloud.notes.shared.util.StringConstants
3535
import it.niedermann.owncloud.notes.shared.util.extensions.getErrorMessage
3636
import it.niedermann.owncloud.notes.shared.util.extensions.toExpirationDateString
3737
import org.json.JSONObject
38+
import retrofit2.Response
3839
import java.util.Date
3940

4041
class ShareRepository(
@@ -61,7 +62,7 @@ class ShareRepository(
6162
val notesPathResponseResult = getNotesPathResponseResult() ?: return null
6263
val notesPath = notesPathResponseResult.notesPath
6364
val notesSuffix = notesPathResponseResult.fileSuffix
64-
return StringConstants.PATH + notesPath + StringConstants.PATH + note.title + notesSuffix
65+
return StringConstants.PATH + notesPath + StringConstants.PATH + note.category + StringConstants.PATH + note.title + notesSuffix
6566
}
6667

6768
fun getShareEntitiesForSpecificNote(note: Note): List<ShareEntity> {
@@ -270,25 +271,37 @@ class ShareRepository(
270271
}
271272
}
272273

273-
fun getShareFromNote(note: Note): List<OCShare>? {
274+
fun getShareFromNote(note: Note): List<OCShare> {
274275
val shareAPI = apiProvider.getShareAPI(applicationContext, account)
275-
val path = getNotePath(note) ?: return null
276-
val call = shareAPI.getShareFromNote(path)
277-
val response = call.execute()
276+
val path = getNotePath(note) ?: return emptyList<OCShare>()
277+
278+
val callSharedWithMe = shareAPI.getShareFromNote(path, true)
279+
var response = callSharedWithMe.execute()
280+
val sharedWithMe = parseResponse(response)
278281

282+
val callSharedWithOthers = shareAPI.getShareFromNote(path, false)
283+
response = callSharedWithOthers.execute()
284+
val sharedWithOthers = parseResponse(response)
285+
286+
sharedWithOthers.addAll(sharedWithMe)
287+
288+
return sharedWithOthers
289+
}
290+
291+
private fun parseResponse(response: Response<OcsResponse<List<CreateShareResponse>>>): MutableList<OCShare> {
279292
return try {
280293
if (response.isSuccessful) {
281294
val body = response.body()
282295
Log_OC.d(tag, "Response successful: $body")
283-
body?.ocs?.data?.toOCShareList()
296+
body?.ocs?.data?.toOCShareList()?.toMutableList() ?: mutableListOf()
284297
} else {
285298
val errorBody = response.errorBody()?.string()
286299
Log_OC.d(tag, "Response failed: $errorBody")
287-
null
300+
mutableListOf()
288301
}
289302
} catch (e: Exception) {
290303
Log_OC.d(tag, "Exception while getting share from note: ", e)
291-
null
304+
mutableListOf()
292305
}
293306
}
294307

0 commit comments

Comments
 (0)