Skip to content

Commit 35de859

Browse files
committed
implement interfaces
Signed-off-by: alperozturk <alper_ozturk@proton.me>
1 parent cce12b8 commit 35de859

File tree

3 files changed

+116
-48
lines changed

3 files changed

+116
-48
lines changed

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

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
import com.owncloud.android.lib.resources.shares.OCShare;
3434
import com.owncloud.android.lib.resources.shares.ShareType;
3535

36+
import org.jetbrains.annotations.NotNull;
37+
3638
import java.util.ArrayList;
3739
import java.util.List;
3840
import java.util.concurrent.Executors;
@@ -45,6 +47,7 @@
4547
import it.niedermann.owncloud.notes.branding.BrandedSnackbar;
4648
import it.niedermann.owncloud.notes.branding.BrandingUtil;
4749
import it.niedermann.owncloud.notes.databinding.ActivityNoteShareBinding;
50+
import it.niedermann.owncloud.notes.main.MainActivity;
4851
import it.niedermann.owncloud.notes.persistence.entity.Account;
4952
import it.niedermann.owncloud.notes.persistence.entity.Note;
5053
import it.niedermann.owncloud.notes.share.adapter.ShareeListAdapter;
@@ -57,6 +60,7 @@
5760
import it.niedermann.owncloud.notes.share.helper.UsersAndGroupsSearchProvider;
5861
import it.niedermann.owncloud.notes.share.listener.NoteShareItemAction;
5962
import it.niedermann.owncloud.notes.share.listener.ShareeListAdapterListener;
63+
import it.niedermann.owncloud.notes.share.model.UpdateShareRequest;
6064
import it.niedermann.owncloud.notes.share.model.UsersAndGroupsSearchConfig;
6165
import it.niedermann.owncloud.notes.share.repository.ShareRepository;
6266
import it.niedermann.owncloud.notes.shared.model.Capabilities;
@@ -65,7 +69,7 @@
6569
import it.niedermann.owncloud.notes.shared.util.clipboard.ClipboardUtil;
6670
import it.niedermann.owncloud.notes.shared.util.extensions.BundleExtensionsKt;
6771

68-
public class NoteShareActivity extends BrandedActivity implements ShareeListAdapterListener, NoteShareItemAction, QuickSharingPermissionsBottomSheetDialog.QuickPermissionSharingBottomSheetActions {
72+
public class NoteShareActivity extends BrandedActivity implements ShareeListAdapterListener, NoteShareItemAction, QuickSharingPermissionsBottomSheetDialog.QuickPermissionSharingBottomSheetActions, SharePasswordDialogFragment.SharePasswordDialogListener {
6973

7074
private static final String TAG = "NoteShareActivity";
7175
public static final String ARG_NOTE = "NOTE";
@@ -343,7 +347,7 @@ public void createPublicShareLink() {
343347
}
344348

345349
public void requestPasswordForShareViaLink(boolean createShare, boolean askForPassword) {
346-
SharePasswordDialogFragment dialog = SharePasswordDialogFragment.newInstance(note, createShare, askForPassword);
350+
SharePasswordDialogFragment dialog = SharePasswordDialogFragment.newInstance(note, createShare, askForPassword, this);
347351
dialog.show(getSupportFragmentManager(), SharePasswordDialogFragment.PASSWORD_FRAGMENT);
348352
}
349353

@@ -405,7 +409,7 @@ public void showPermissionsDialog(OCShare share) {
405409

406410
@Override
407411
public void requestPasswordForShare(OCShare share, boolean askForPassword) {
408-
SharePasswordDialogFragment dialog = SharePasswordDialogFragment.newInstance(share, askForPassword);
412+
SharePasswordDialogFragment dialog = SharePasswordDialogFragment.newInstance(share, askForPassword, this);
409413
dialog.show(getSupportFragmentManager(), SharePasswordDialogFragment.PASSWORD_FRAGMENT);
410414
}
411415

@@ -688,4 +692,47 @@ protected void onDestroy() {
688692
executorService.shutdown();
689693
super.onDestroy();
690694
}
695+
696+
@Override
697+
public void shareFileViaPublicShare(@Nullable Note note, @Nullable String password) {
698+
if (note == null || password == null) {
699+
Log_OC.d(TAG, "note or password is null, cannot create a public share");
700+
return;
701+
}
702+
703+
executorService.submit(() -> {
704+
final var result = repository.addShare(note, ShareType.PUBLIC_LINK, "", "false", password, 0, "");
705+
runOnUiThread(() -> {
706+
if (result != null) {
707+
NoteShareActivity.this.recreate();
708+
} else {
709+
final var message = getString(R.string.note_share_activity_you_are_not_allowed_to_share);
710+
DisplayUtils.showSnackMessage(NoteShareActivity.this, message);
711+
}
712+
});
713+
});
714+
}
715+
716+
@Override
717+
public void setPasswordToShare(@NotNull OCShare share, @Nullable String password) {
718+
if (password == null) {
719+
Log_OC.d(TAG, "password is null, cannot update a public share");
720+
return;
721+
}
722+
723+
executorService.submit(() -> {{
724+
final var requestBody = repository.getUpdateShareRequest(false, share,"", password,false,-1,0);
725+
final var success = repository.updateShare(share.getId(), requestBody);
726+
727+
runOnUiThread(() -> {
728+
if (success) {
729+
final var intent = new Intent(NoteShareActivity.this, MainActivity.class);
730+
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
731+
NoteShareActivity.this.startActivity(intent);
732+
} else {
733+
DisplayUtils.showSnackMessage(NoteShareActivity.this, getString(R.string.note_share_detail_activity_create_share_error));
734+
}
735+
});
736+
}});
737+
}
691738
}

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

Lines changed: 8 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@ import it.niedermann.owncloud.notes.main.MainActivity
2020
import it.niedermann.owncloud.notes.persistence.entity.Note
2121
import it.niedermann.owncloud.notes.share.dialog.ExpirationDatePickerDialogFragment
2222
import it.niedermann.owncloud.notes.share.helper.SharingMenuHelper
23-
import it.niedermann.owncloud.notes.share.model.ShareAttributesV1
24-
import it.niedermann.owncloud.notes.share.model.ShareAttributesV2
2523
import it.niedermann.owncloud.notes.share.model.SharePasswordRequest
26-
import it.niedermann.owncloud.notes.share.model.UpdateShareRequest
2724
import it.niedermann.owncloud.notes.share.repository.ShareRepository
2825
import it.niedermann.owncloud.notes.shared.util.DisplayUtils
2926
import it.niedermann.owncloud.notes.shared.util.clipboard.ClipboardUtil
@@ -34,7 +31,6 @@ import kotlinx.coroutines.launch
3431
import kotlinx.coroutines.withContext
3532
import java.text.SimpleDateFormat
3633
import java.util.Date
37-
import java.util.Locale
3834

3935
/**
4036
* Activity class to show share permission options, set expiration date, change label, set password, send note
@@ -518,16 +514,6 @@ class NoteShareDetailActivity : BrandedActivity(),
518514
else -> permission
519515
}
520516

521-
private fun getExpirationDate(): String? {
522-
if (chosenExpDateInMills == -1L) {
523-
return null
524-
}
525-
526-
val date = Date(chosenExpDateInMills)
527-
528-
return SimpleDateFormat("yyyy-MM-dd", Locale.US).format(date)
529-
}
530-
531517
/**
532518
* method to validate step 2 (note screen) information
533519
*/
@@ -545,37 +531,15 @@ class NoteShareDetailActivity : BrandedActivity(),
545531
}
546532

547533
private suspend fun updateShare(noteText: String, password: String, sendEmail: Boolean) {
548-
val capabilities = repository.capabilities()
549-
val shouldUseShareAttributesV2 = (capabilities.nextcloudMajorVersion?.toInt() ?: 0) >= 30
550534
val downloadPermission = !binding.shareProcessHideDownloadCheckbox.isChecked
551-
552-
val shareAttributes = arrayOf(
553-
if (shouldUseShareAttributesV2) {
554-
ShareAttributesV2(
555-
scope = "permissions",
556-
key = "download",
557-
value = downloadPermission
558-
)
559-
} else {
560-
ShareAttributesV1(
561-
scope = "permissions",
562-
key = "download",
563-
enabled = downloadPermission
564-
)
565-
}
566-
)
567-
568-
val attributes = gson.toJson(shareAttributes)
569-
570-
val requestBody = UpdateShareRequest(
571-
share_id = share!!.id.toInt(),
572-
permissions = if (permission == -1) null else permission,
573-
password = password,
574-
publicUpload = "false",
575-
expireDate = getExpirationDate(),
576-
note = noteText,
577-
attributes = attributes,
578-
sendMail = sendEmail.toString()
535+
val requestBody = repository.getUpdateShareRequest(
536+
downloadPermission,
537+
share,
538+
noteText,
539+
password,
540+
sendEmail,
541+
chosenExpDateInMills,
542+
permission
579543
)
580544

581545
val updateShareResult = repository.updateShare(share!!.id, requestBody)

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

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import it.niedermann.owncloud.notes.persistence.entity.Note
1313
import it.niedermann.owncloud.notes.persistence.entity.ShareEntity
1414
import it.niedermann.owncloud.notes.share.model.CreateShareRequest
1515
import it.niedermann.owncloud.notes.share.model.CreateShareResponse
16+
import it.niedermann.owncloud.notes.share.model.ShareAttributesV1
17+
import it.niedermann.owncloud.notes.share.model.ShareAttributesV2
1618
import it.niedermann.owncloud.notes.share.model.SharePasswordRequest
1719
import it.niedermann.owncloud.notes.share.model.UpdateSharePermissionRequest
1820
import it.niedermann.owncloud.notes.share.model.UpdateShareRequest
@@ -21,10 +23,14 @@ import it.niedermann.owncloud.notes.shared.model.ApiVersion
2123
import it.niedermann.owncloud.notes.shared.model.Capabilities
2224
import it.niedermann.owncloud.notes.shared.model.NotesSettings
2325
import org.json.JSONObject
26+
import java.text.SimpleDateFormat
27+
import java.util.Date
28+
import java.util.Locale
2429

2530
class ShareRepository(private val applicationContext: Context, private val account: SingleSignOnAccount) {
2631

2732
private val tag = "ShareRepository"
33+
private val gson = Gson()
2834
private val apiProvider: ApiProvider by lazy { ApiProvider.getInstance() }
2935
private val notesRepository: NotesRepository by lazy {
3036
NotesRepository.getInstance(
@@ -144,7 +150,6 @@ class ShareRepository(private val applicationContext: Context, private val accou
144150
respPartialCircles
145151
)
146152

147-
val gson = Gson()
148153
return jsonResults.flatMap { jsonResult ->
149154
jsonResult.map { linkedTreeMap ->
150155
JSONObject(gson.toJson(linkedTreeMap))
@@ -155,6 +160,58 @@ class ShareRepository(private val applicationContext: Context, private val accou
155160
}
156161
}
157162

163+
fun getUpdateShareRequest(
164+
downloadPermission: Boolean,
165+
share: OCShare?,
166+
noteText: String,
167+
password: String,
168+
sendEmail: Boolean,
169+
chosenExpDateInMills: Long,
170+
permission: Int
171+
): UpdateShareRequest {
172+
val capabilities = capabilities()
173+
val shouldUseShareAttributesV2 = (capabilities.nextcloudMajorVersion?.toInt() ?: 0) >= 30
174+
175+
val shareAttributes = arrayOf(
176+
if (shouldUseShareAttributesV2) {
177+
ShareAttributesV2(
178+
scope = "permissions",
179+
key = "download",
180+
value = downloadPermission
181+
)
182+
} else {
183+
ShareAttributesV1(
184+
scope = "permissions",
185+
key = "download",
186+
enabled = downloadPermission
187+
)
188+
}
189+
)
190+
191+
val attributes = gson.toJson(shareAttributes)
192+
193+
return UpdateShareRequest(
194+
share_id = share!!.id.toInt(),
195+
permissions = if (permission == -1) null else permission,
196+
password = password,
197+
publicUpload = "false",
198+
expireDate = getExpirationDate(chosenExpDateInMills),
199+
note = noteText,
200+
attributes = attributes,
201+
sendMail = sendEmail.toString()
202+
)
203+
}
204+
205+
private fun getExpirationDate(chosenExpDateInMills: Long): String? {
206+
if (chosenExpDateInMills == -1L) {
207+
return null
208+
}
209+
210+
val date = Date(chosenExpDateInMills)
211+
212+
return SimpleDateFormat("yyyy-MM-dd", Locale.US).format(date)
213+
}
214+
158215
fun capabilities(): Capabilities = notesRepository.capabilities
159216

160217
fun getShares(remoteId: Long): List<OCShare>? {

0 commit comments

Comments
 (0)