Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authordesperateCoder <echotodevnull@gmail.com>2020-11-21 18:55:19 +0300
committerdesperateCoder <echotodevnull@gmail.com>2020-11-21 18:55:19 +0300
commit365bf07399aa0e5fdfb8db13903b28fc5bdd56cd (patch)
tree02ea6baf2c53dfc1696fba1a33be1fb5c15f5ed4 /app
parentd235ae16f1e582fc21a8631ccb3ecd840fba13b4 (diff)
parentb182b1a12101166de1658a7a91c7036c857cd01c (diff)
Merge branch 'master' of github.com:stefan-niedermann/nextcloud-deck
Diffstat (limited to 'app')
-rw-r--r--app/build.gradle2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityViewHolder.java43
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java6
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/stack/StackWidgetConfigurationActivity.java3
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/util/ProjectUtil.java13
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/util/ViewUtil.java11
-rw-r--r--app/src/main/res/drawable/type_add_color_36dp.xml2
-rw-r--r--app/src/main/res/drawable/type_delete_color_36dp.xml2
-rw-r--r--app/src/main/res/layout/activity_main.xml8
-rw-r--r--app/src/main/res/values/colors.xml3
-rw-r--r--app/src/main/res/values/strings.xml9
-rw-r--r--app/src/test/java/it/niedermann/nextcloud/deck/ProjectUtilTest.java29
12 files changed, 95 insertions, 36 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 99814978e..bf04a2feb 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -105,7 +105,7 @@ dependencies {
// --- Backend-Libraries ---
// -------------------------
- implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.4.10'
+ implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.4.20'
// Room components
implementation "androidx.room:room-runtime:$rootProject.roomVersion"
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityViewHolder.java
index f8d237ad4..6362f90dd 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityViewHolder.java
@@ -3,6 +3,7 @@ package it.niedermann.nextcloud.deck.ui.card.activities;
import android.content.Context;
import android.view.MenuInflater;
import android.view.View;
+import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
@@ -13,6 +14,7 @@ import it.niedermann.nextcloud.deck.databinding.ItemActivityBinding;
import it.niedermann.nextcloud.deck.model.enums.ActivityType;
import it.niedermann.nextcloud.deck.model.ocs.Activity;
import it.niedermann.nextcloud.deck.util.DateUtil;
+import it.niedermann.nextcloud.deck.util.ViewUtil;
public class CardActivityViewHolder extends RecyclerView.ViewHolder {
public ItemActivityBinding binding;
@@ -32,31 +34,54 @@ public class CardActivityViewHolder extends RecyclerView.ViewHolder {
inflater.inflate(R.menu.activity_menu, menu);
menu.findItem(android.R.id.copy).setOnMenuItemClickListener(item -> ClipboardUtil.INSTANCE.copyToClipboard(context, activity.getSubject()));
});
- switch (ActivityType.findById(activity.getType())) {
+ final ActivityType type = ActivityType.findById(activity.getType());
+ setImageResource(binding.type, type);
+ setImageColor(context, binding.type, type);
+ }
+
+ private static void setImageResource(@NonNull ImageView imageView, @NonNull ActivityType type) {
+ switch (type) {
case CHANGE:
- binding.type.setImageResource(R.drawable.type_change_36dp);
+ imageView.setImageResource(R.drawable.type_change_36dp);
break;
case ADD:
- binding.type.setImageResource(R.drawable.type_add_color_36dp);
+ imageView.setImageResource(R.drawable.type_add_color_36dp);
break;
case DELETE:
- binding.type.setImageResource(R.drawable.type_delete_color_36dp);
+ imageView.setImageResource(R.drawable.type_delete_color_36dp);
break;
case ARCHIVE:
- binding.type.setImageResource(R.drawable.type_archive_grey600_36dp);
+ imageView.setImageResource(R.drawable.type_archive_grey600_36dp);
break;
case TAGGED_WITH_LABEL:
- binding.type.setImageResource(R.drawable.type_label_grey600_36dp);
+ imageView.setImageResource(R.drawable.type_label_grey600_36dp);
break;
case COMMENT:
- binding.type.setImageResource(R.drawable.type_comment_grey600_36dp);
+ imageView.setImageResource(R.drawable.type_comment_grey600_36dp);
break;
case FILES:
- binding.type.setImageResource(R.drawable.type_file_36dp);
+ imageView.setImageResource(R.drawable.type_file_36dp);
+ break;
case HISTORY:
- binding.type.setImageResource(R.drawable.type_history_36dp);
+ imageView.setImageResource(R.drawable.type_history_36dp);
+ break;
case DECK:
default:
+ imageView.setImageResource(R.drawable.ic_app_logo);
+ break;
+ }
+ }
+
+ private static void setImageColor(@NonNull Context context, @NonNull ImageView imageView, @NonNull ActivityType type) {
+ switch (type) {
+ case ADD:
+ ViewUtil.setImageColor(context, imageView, R.color.activity_create);
+ break;
+ case DELETE:
+ ViewUtil.setImageColor(context, imageView, R.color.activity_delete);
+ break;
+ default:
+ ViewUtil.setImageColor(context, imageView, R.color.grey600);
break;
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java
index bb42f27ef..81a166cb6 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java
@@ -233,9 +233,9 @@ public class CardAttachmentsFragment extends BrandedFragment implements Attachme
binding.emptyContentView.hideDescription();
}
@Nullable Context context = requireContext();
- if (isBrandingEnabled(context)) {
- applyBrand(readBrandMainColor(context));
- }
+ applyBrand(isBrandingEnabled(context)
+ ? readBrandMainColor(context)
+ : ContextCompat.getColor(context, R.color.defaultBrand));
return binding.getRoot();
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/stack/StackWidgetConfigurationActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/stack/StackWidgetConfigurationActivity.java
index 6b86b50ba..771feabc2 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/stack/StackWidgetConfigurationActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/stack/StackWidgetConfigurationActivity.java
@@ -7,6 +7,7 @@ import android.os.Bundle;
import androidx.appcompat.app.ActionBar;
import it.niedermann.nextcloud.deck.DeckLog;
+import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.ui.PickStackActivity;
@@ -18,7 +19,7 @@ public class StackWidgetConfigurationActivity extends PickStackActivity {
super.onCreate(savedInstanceState);
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
- actionBar.setTitle("Add stack widget");
+ actionBar.setTitle(R.string.add_stack_widget);
}
setResult(RESULT_CANCELED);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/util/ProjectUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/util/ProjectUtil.java
index 015241eef..f43f7d824 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/util/ProjectUtil.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/util/ProjectUtil.java
@@ -46,11 +46,14 @@ public class ProjectUtil {
throw new IllegalArgumentException("provided url is null");
}
url = url.trim();
+ if (url.length() == 0) {
+ throw new IllegalArgumentException("trimmed url is empty");
+ }
// extract important part
- String[] splitByPrefix = url.split(".*index\\.php/apps/deck/#/board/");
+ String[] splitByPrefix = url.split(".*index\\.php/apps/deck(/#)?/board/");
// split into board- and card part
if (splitByPrefix.length < 2) {
- throw new IllegalArgumentException("this doesn't seem to be an URL containing the board ID");
+ throw new IllegalArgumentException("This URL doesn't seem to be an URL containing the boardId: \"" + url + "\"");
}
String[] splitBySeparator = splitByPrefix[1].split("/card/");
@@ -63,13 +66,13 @@ public class ProjectUtil {
}
if (splitBySeparator.length < 1) {
- throw new IllegalArgumentException("this doesn't seem to be a valid URL containing the board ID");
+ throw new IllegalArgumentException("This URL doesn't seem to be an URL containing the boardId: \"" + url + "\"");
}
// return result
long boardId = Long.parseLong(splitBySeparator[0]);
if (boardId < 1) {
- throw new IllegalArgumentException("invalid boardId: "+boardId);
+ throw new IllegalArgumentException("Invalid boardId \"" + boardId + "\" for url \"" + url + "\".");
}
if (splitBySeparator.length == 1) {
return new long[]{boardId};
@@ -81,7 +84,7 @@ public class ProjectUtil {
return new long[]{boardId};
}
} else {
- throw new IllegalArgumentException("could not parse URL for board- and/or card-ID");
+ throw new IllegalArgumentException("could not parse URL for boardId and/or cardId: \"" + url + "\"");
}
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/util/ViewUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/util/ViewUtil.java
index b676fcedb..4ae39f787 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/util/ViewUtil.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/util/ViewUtil.java
@@ -12,6 +12,7 @@ import android.text.style.ImageSpan;
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.annotation.ColorRes;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -33,6 +34,8 @@ import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.model.ocs.comment.Mention;
+import static android.os.Build.VERSION.SDK_INT;
+import static android.os.Build.VERSION_CODES.LOLLIPOP;
import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
import static java.time.temporal.ChronoUnit.DAYS;
@@ -140,4 +143,12 @@ public final class ViewUtil {
}
textView.setText(messageBuilder);
}
+
+ public static void setImageColor(@NonNull Context context, @NonNull ImageView imageView, @ColorRes int colorRes) {
+ if (SDK_INT >= LOLLIPOP) {
+ imageView.setImageTintList(ColorStateList.valueOf(ContextCompat.getColor(context, colorRes)));
+ } else {
+ imageView.setColorFilter(ContextCompat.getColor(context, colorRes));
+ }
+ }
}
diff --git a/app/src/main/res/drawable/type_add_color_36dp.xml b/app/src/main/res/drawable/type_add_color_36dp.xml
index 4d964871e..145abfc94 100644
--- a/app/src/main/res/drawable/type_add_color_36dp.xml
+++ b/app/src/main/res/drawable/type_add_color_36dp.xml
@@ -1,5 +1,5 @@
<vector android:autoMirrored="true" android:height="36dp"
- android:tint="#00D400" android:viewportHeight="24.0"
+ android:tint="@color/activity_create" android:viewportHeight="24.0"
android:viewportWidth="24.0" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
</vector>
diff --git a/app/src/main/res/drawable/type_delete_color_36dp.xml b/app/src/main/res/drawable/type_delete_color_36dp.xml
index 014bf20b8..3b2394fa0 100644
--- a/app/src/main/res/drawable/type_delete_color_36dp.xml
+++ b/app/src/main/res/drawable/type_delete_color_36dp.xml
@@ -1,5 +1,5 @@
<vector android:autoMirrored="true" android:height="36dp"
- android:tint="#D40000" android:viewportHeight="24.0"
+ android:tint="@color/activity_delete" android:viewportHeight="24.0"
android:viewportWidth="24.0" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
</vector>
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index ac0dadf82..0692fb8d6 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -133,9 +133,9 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/simple_filter"
android:padding="12dp"
- android:tint="?attr/colorAccent"
android:tooltipText="@string/simple_filter"
app:srcCompat="@drawable/ic_filter_list_white_24dp"
+ app:tint="?attr/colorAccent"
tools:targetApi="o" />
<ImageView
@@ -147,8 +147,8 @@
android:layout_marginBottom="12dp"
android:contentDescription="@null"
android:src="@drawable/circle_grey600_8dp"
- android:tint="@color/defaultBrand"
android:visibility="gone"
+ app:tint="@color/defaultBrand"
tools:visibility="visible" />
</FrameLayout>
@@ -160,11 +160,11 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/action_archived_cards"
android:padding="12dp"
- android:tint="?attr/colorAccent"
android:tooltipText="@string/action_archived_cards"
android:translationX="12dp"
android:visibility="gone"
app:srcCompat="@drawable/ic_archive_white_24dp"
+ app:tint="?attr/colorAccent"
tools:targetApi="o"
tools:visibility="visible" />
</androidx.appcompat.widget.Toolbar>
@@ -192,9 +192,9 @@
android:background="?attr/colorPrimary"
android:contentDescription="@string/add_list"
android:foreground="?attr/selectableItemBackgroundBorderless"
- android:tint="?attr/colorAccent"
android:tooltipText="@string/manage_list"
app:srcCompat="@drawable/ic_menu"
+ app:tint="?attr/colorAccent"
tools:ignore="UnusedAttribute" />
</LinearLayout>
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 55812677c..d7907027a 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -12,6 +12,9 @@
<color name="bg_card_wrapper">#fafafa</color>
<color name="dark_fg_primary">#e5e5e5</color>
+ <color name="activity_create">#00D400</color>
+ <color name="activity_delete">#D40000</color>
+
<!-- due date colors -->
<color name="due_tomorrow">#7fffc53a</color>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d6d9470fe..8b2b4efcb 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -10,7 +10,6 @@
<string name="drawer_end_account">Last account</string>
<string name="drawer_manage_accounts">Manage accounts</string>
- <!-- Simple values -->
<string name="simple_boards">Boards</string>
<string name="simple_add">Add</string>
<string name="simple_save">Save</string>
@@ -47,7 +46,6 @@
<string name="delete_board">Delete board</string>
<string name="delete_something">Delete %1$s</string>
- <!-- About -->
<string name="about">About</string>
<string name="about_version_title">Version</string>
<string name="about_version">You are currently using %1$s</string>
@@ -107,7 +105,6 @@
<string name="label_clear_due_date">Clear due date</string>
<string name="label_add">Add %1$s</string>
- <!-- URLs -->
<string name="url_maintainer" translatable="false">https://www.niedermann.it/</string>
<string name="url_about_icon_author" translatable="false">https://github.com/nextcloud/deck/commit/8c04ea8dc99e9b392f4039e8e5e6964d5a6d3453#diff-f3716cc279904617b1a21078526b6bf1R1</string>
<string name="url_source" translatable="false">https://github.com/stefan-niedermann/nextcloud-deck</string>
@@ -192,11 +189,9 @@
<string name="open_in_browser">Open in browser</string>
<string name="updating_card">Updating card…</string>
- <!-- Move lists -->
<string name="move_list_right">Move list right</string>
<string name="move_list_left">Move list left</string>
- <!-- Filter -->
<string name="filter_no_filter">All</string>
<string name="filter_overdue">Overdue</string>
<string name="filter_today">Today</string>
@@ -207,7 +202,6 @@
<string name="filter_by_assigned_user">Filter by assigned user</string>
<string name="filter_by_duedate">Filter by due date</string>
- <!-- Archived cards -->
<string name="archived_cards">Archived cards</string>
<string name="action_card_dearchive">Undo card archiving</string>
<string name="action_archived_cards">Browse archived cards</string>
@@ -222,11 +216,9 @@
<string name="filter_user_title">Users</string>
<string name="filter_duedate_title">Due date</string>
- <!-- Archived boards -->
<string name="action_board_dearchive">Undo board archiving</string>
<string name="archived_boards">Archived boards</string>
- <!-- Errors -->
<string name="error">An error appeared</string>
<string name="synchronization_failed">Synchronization failed</string>
<string name="operation_not_yet_supported">Not yet supported</string>
@@ -327,4 +319,5 @@
<string name="files">Files</string>
<string name="gallery">Gallery</string>
<string name="simple_attach">attach</string>
+ <string name="add_stack_widget">Add list widget</string>
</resources>
diff --git a/app/src/test/java/it/niedermann/nextcloud/deck/ProjectUtilTest.java b/app/src/test/java/it/niedermann/nextcloud/deck/ProjectUtilTest.java
index 2c03f5952..1c8062051 100644
--- a/app/src/test/java/it/niedermann/nextcloud/deck/ProjectUtilTest.java
+++ b/app/src/test/java/it/niedermann/nextcloud/deck/ProjectUtilTest.java
@@ -10,7 +10,7 @@ import static org.junit.Assert.assertThrows;
public class ProjectUtilTest {
@Test
public void extractBoardIdAndCardIdFromUrl() {
- // Valid board URLs
+ // Valid board URLs with #
assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("index.php/apps/deck/#/board/4"), new long[]{4});
assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("/index.php/apps/deck/#/board/4"), new long[]{4});
assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("example.com/index.php/apps/deck/#/board/4"), new long[]{4});
@@ -22,7 +22,28 @@ public class ProjectUtilTest {
assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("https://example.com/nextcloud/index.php/apps/deck/#/board/4/card/0"), new long[]{4});
assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("https://example.com/nextcloud/index.php/apps/deck/#/board/4/foo"), new long[]{4});
- // Valid card URLs
+ // Valid board URLs without #
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("index.php/apps/deck/board/4"), new long[]{4});
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("/index.php/apps/deck/board/4"), new long[]{4});
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("example.com/index.php/apps/deck/board/4"), new long[]{4});
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("http://example.com/index.php/apps/deck/board/4"), new long[]{4});
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("https://example.com/index.php/apps/deck/board/4"), new long[]{4});
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("https://example.com/nextcloud/index.php/apps/deck/board/4"), new long[]{4});
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("https://example.com/nextcloud/index.php/apps/deck/board/4/card"), new long[]{4});
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("https://example.com/nextcloud/index.php/apps/deck/board/4/card/"), new long[]{4});
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("https://example.com/nextcloud/index.php/apps/deck/board/4/card/0"), new long[]{4});
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("https://example.com/nextcloud/index.php/apps/deck/board/4/foo"), new long[]{4});
+
+ // Valid card URLs with #
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("index.php/apps/deck/#/board/4/card/6"), new long[]{4, 6});
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("/index.php/apps/deck/#/board/4/card/6"), new long[]{4, 6});
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("example.com/index.php/apps/deck/#/board/4/card/6"), new long[]{4, 6});
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("http://example.com/index.php/apps/deck/#/board/4/card/6"), new long[]{4, 6});
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("https://example.com/index.php/apps/deck/#/board/4/card/6"), new long[]{4, 6});
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("https://example.com/index.php/apps/deck/#/board/4/card/6/"), new long[]{4, 6});
+ assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("https://example.com/nextcloud/index.php/apps/deck/#/board/4/card/6"), new long[]{4, 6});
+
+ // Valid card URLs without #
assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("index.php/apps/deck/#/board/4/card/6"), new long[]{4, 6});
assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("/index.php/apps/deck/#/board/4/card/6"), new long[]{4, 6});
assertArrayEquals(ProjectUtil.extractBoardIdAndCardIdFromUrl("example.com/index.php/apps/deck/#/board/4/card/6"), new long[]{4, 6});
@@ -48,11 +69,13 @@ public class ProjectUtilTest {
assertThrows(IllegalArgumentException.class, () -> ProjectUtil.extractBoardIdAndCardIdFromUrl("https://example.com/nextcloud/index.php/call/qkzhe5k2"));
// Invalid URLs
- //noinspection ConstantConditions
assertThrows(IllegalArgumentException.class, () -> ProjectUtil.extractBoardIdAndCardIdFromUrl(null));
assertThrows(IllegalArgumentException.class, () -> ProjectUtil.extractBoardIdAndCardIdFromUrl(""));
assertThrows(IllegalArgumentException.class, () -> ProjectUtil.extractBoardIdAndCardIdFromUrl("/index.php/apps/deck/#/board/0"));
assertThrows(IllegalArgumentException.class, () -> ProjectUtil.extractBoardIdAndCardIdFromUrl("/index.php/apps/deck/#/board/0/card/3"));
assertThrows(IllegalArgumentException.class, () -> ProjectUtil.extractBoardIdAndCardIdFromUrl("/index.php/apps/deck/#/board//card/3"));
+ assertThrows(IllegalArgumentException.class, () -> ProjectUtil.extractBoardIdAndCardIdFromUrl("/index.php/apps/deck/board/0"));
+ assertThrows(IllegalArgumentException.class, () -> ProjectUtil.extractBoardIdAndCardIdFromUrl("/index.php/apps/deck/board/0/card/3"));
+ assertThrows(IllegalArgumentException.class, () -> ProjectUtil.extractBoardIdAndCardIdFromUrl("/index.php/apps/deck/board//card/3"));
}
}