Skip to content

Commit 7c0d641

Browse files
feat(sharing): Show experiation date state in share list
Signed-off-by: Andy Scherzinger <[email protected]>
1 parent 37702f2 commit 7c0d641

File tree

7 files changed

+64
-15
lines changed

7 files changed

+64
-15
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,11 @@
5858
NotesListWidgetData.class,
5959
ShareEntity.class,
6060
Capabilities.class
61-
}, version = 27,
61+
}, version = 28,
6262
autoMigrations = {
6363
@AutoMigration(from = 25, to = 26),
6464
@AutoMigration(from = 26, to = 27),
65+
@AutoMigration(from = 27, to = 28),
6566
}
6667
)
6768
@TypeConverters({Converters.class})

app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/ShareEntity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,6 @@ data class ShareEntity(
2424
val displayname_file_owner: String? = null,
2525
val uid_owner: String? = null,
2626
val displayname_owner: String? = null,
27-
val url: String? = null
27+
val url: String? = null,
28+
val expiration_date: Long? = null
2829
)

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,12 @@ public void bind(OCShare publicShare, ShareeListAdapterListener listener) {
8383
binding.shareByLinkContainer.setOnClickListener(v -> listener.showPermissionsDialog(publicShare));
8484
}
8585

86+
if (publicShare.getExpirationDate() > 0) {
87+
binding.expirationStatus.setVisibility(View.VISIBLE);
88+
} else {
89+
binding.expirationStatus.setVisibility(View.GONE);
90+
}
91+
8692
binding.copyLink.setOnClickListener(v -> listener.copyLink(publicShare));
8793
}
8894

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,11 @@ import it.niedermann.owncloud.notes.shared.model.NotesSettings
3333
import it.niedermann.owncloud.notes.shared.model.OcsResponse
3434
import it.niedermann.owncloud.notes.shared.util.StringConstants
3535
import it.niedermann.owncloud.notes.shared.util.extensions.getErrorMessage
36+
import it.niedermann.owncloud.notes.shared.util.extensions.toExpirationDateLong
3637
import it.niedermann.owncloud.notes.shared.util.extensions.toExpirationDateString
3738
import org.json.JSONObject
39+
import java.time.LocalDateTime
40+
import java.time.format.DateTimeFormatter
3841
import java.util.Date
3942

4043
class ShareRepository(private val applicationContext: Context, private val account: SingleSignOnAccount) {
@@ -109,6 +112,7 @@ class ShareRepository(private val applicationContext: Context, private val accou
109112
val uidOwner = map?.get("uid_owner") as? String
110113
val displayNameOwner = map?.get("displayname_owner") as? String
111114
val url = map?.get("url") as? String
115+
val expirationDateString = map?.get("expiration") as? String
112116

113117
id?.toInt()?.let {
114118
val entity = ShareEntity(
@@ -122,7 +126,8 @@ class ShareRepository(private val applicationContext: Context, private val accou
122126
displayname_file_owner = displayNameFileOwner,
123127
uid_owner = uidOwner,
124128
displayname_owner = displayNameOwner,
125-
url = url
129+
url = url,
130+
expiration_date = expirationDateString?.toExpirationDateLong()
126131
)
127132

128133
entities.add(entity)

app/src/main/java/it/niedermann/owncloud/notes/shared/util/extensions/DateExtensions.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import java.text.SimpleDateFormat
1010
import java.util.Date
1111
import java.util.Locale
1212

13-
fun Date.toExpirationDateString(): String {
14-
return SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(this)
15-
}
13+
fun Date.toExpirationDateString(): String = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(this)
14+
15+
fun String.toExpirationDateLong(): Long =
16+
SimpleDateFormat("yyyy-MM-dd 00:00:00", Locale.getDefault()).parse(this)?.time ?: 0L
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<!--
2+
~ Nextcloud Notes - Android Client
3+
~
4+
~ SPDX-FileCopyrightText: 2018-2025 Google LLC
5+
~ SPDX-License-Identifier: Apache-2.0
6+
-->
7+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
8+
android:width="24dp"
9+
android:height="24dp"
10+
android:tint="@color/icon_color_default"
11+
android:viewportWidth="960"
12+
android:viewportHeight="960">
13+
<path
14+
android:fillColor="@android:color/white"
15+
android:pathData="M612,668L668,612L520,464L520,280L440,280L440,496L612,668ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480ZM480,800Q613,800 706.5,706.5Q800,613 800,480Q800,347 706.5,253.5Q613,160 480,160Q347,160 253.5,253.5Q160,347 160,480Q160,613 253.5,706.5Q347,800 480,800Z" />
16+
</vector>

app/src/main/res/layout/item_share_link_share.xml

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,36 @@
1414
android:layout_marginVertical="@dimen/spacer_1x"
1515
android:orientation="horizontal">
1616

17-
<ImageView
18-
android:id="@+id/icon"
19-
android:layout_width="@dimen/default_icon_size"
20-
android:layout_height="@dimen/default_icon_size"
17+
<FrameLayout
18+
android:id="@+id/dialogAvatarFrameLayout"
19+
android:layout_width="@dimen/minimum_size_for_touchable_area"
20+
android:layout_height="@dimen/minimum_size_for_touchable_area"
2121
android:layout_marginStart="@dimen/spacer_2x"
2222
android:layout_marginTop="@dimen/spacer_1hx"
23-
android:layout_marginEnd="@dimen/spacer_2x"
24-
android:background="@drawable/round_bgnd"
25-
android:contentDescription="@string/note_share_activity_share_icon_content_description"
26-
android:padding="@dimen/spacer_1x"
27-
android:src="@drawable/shared_via_link" />
23+
android:layout_marginEnd="@dimen/spacer_1x"
24+
android:layout_centerVertical="true">
25+
26+
<ImageView
27+
android:id="@+id/icon"
28+
android:layout_width="@dimen/default_icon_size"
29+
android:layout_height="@dimen/default_icon_size"
30+
android:background="@drawable/round_bgnd"
31+
android:contentDescription="@string/note_share_activity_share_icon_content_description"
32+
android:padding="@dimen/spacer_1x"
33+
android:src="@drawable/shared_via_link" />
34+
35+
<ImageView
36+
android:id="@+id/expiration_status"
37+
android:layout_width="18dp"
38+
android:layout_height="18dp"
39+
android:layout_gravity="bottom|end"
40+
android:background="@drawable/round_bgnd"
41+
android:contentDescription="@null"
42+
android:padding="1dp"
43+
android:layout_margin="@dimen/spacer_1hx"
44+
android:src="@drawable/schedule_24px"
45+
android:tint="@color/text_color" />
46+
</FrameLayout>
2847

2948
<LinearLayout
3049
android:id="@+id/share_name_layout"

0 commit comments

Comments
 (0)