Skip to content

Commit 2713254

Browse files
Merge pull request #1846 from ammaratef45/master
feat: support sharing link to a board from the drawer menu
2 parents ef132f2 + f2d9427 commit 2713254

File tree

6 files changed

+47
-1
lines changed

6 files changed

+47
-1
lines changed

app/src/main/java/it/niedermann/nextcloud/deck/model/ocs/Version.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,4 +247,15 @@ public int getShareLinkResource() {
247247
return R.string.url_fragment_share_card_pre_1_0_0;
248248
}
249249
}
250+
251+
@StringRes
252+
public int getShareBoardLinkResource() {
253+
if (isGreaterOrEqualTo(VERSION_1_12_0)) {
254+
return R.string.url_fragment_share_board_since_1_12_0;
255+
} else if (isGreaterOrEqualTo(VERSION_1_0_0)) {
256+
return R.string.url_fragment_share_board_since_1_0_0;
257+
} else {
258+
return R.string.url_fragment_share_board_pre_1_0_0;
259+
}
260+
}
250261
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package it.niedermann.nextcloud.deck.ui.board;
2+
3+
import it.niedermann.nextcloud.deck.model.Board;
4+
5+
public interface ShareBoardLinkListener {
6+
void onShareBoardLink(Board board);
7+
}

app/src/main/java/it/niedermann/nextcloud/deck/ui/main/DrawerMenuInflater.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@
1818
import it.niedermann.nextcloud.deck.model.full.FullBoard;
1919
import it.niedermann.nextcloud.deck.ui.board.ArchiveBoardListener;
2020
import it.niedermann.nextcloud.deck.ui.board.DeleteBoardDialogFragment;
21+
import it.niedermann.nextcloud.deck.ui.board.ShareBoardLinkListener;
2122
import it.niedermann.nextcloud.deck.ui.board.accesscontrol.AccessControlDialogFragment;
2223
import it.niedermann.nextcloud.deck.ui.board.edit.EditBoardDialogFragment;
2324
import it.niedermann.nextcloud.deck.ui.board.managelabels.ManageLabelsDialogFragment;
2425
import it.niedermann.nextcloud.deck.ui.theme.ThemeUtils;
2526

26-
public class DrawerMenuInflater<T extends FragmentActivity & ArchiveBoardListener> {
27+
public class DrawerMenuInflater<T extends FragmentActivity & ArchiveBoardListener & ShareBoardLinkListener> {
2728
public static final int MENU_ID_ABOUT = -1;
2829
public static final int MENU_ID_ADD_BOARD = -2;
2930
public static final int MENU_ID_SETTINGS = -3;
@@ -75,6 +76,9 @@ public Map<Integer, Long> inflateBoards(
7576
if (itemId == SHARE_BOARD_ID) {
7677
AccessControlDialogFragment.newInstance(account, fullBoard.getLocalId()).show(activity.getSupportFragmentManager(), AccessControlDialogFragment.class.getSimpleName());
7778
return true;
79+
} else if (itemId == R.id.share_link) {
80+
activity.onShareBoardLink(fullBoard.getBoard());
81+
return true;
7882
} else if (itemId == R.id.edit_board) {
7983
EditBoardDialogFragment.newInstance(account, fullBoard.getLocalId()).show(activity.getSupportFragmentManager(), editBoard);
8084
return true;

app/src/main/java/it/niedermann/nextcloud/deck/ui/main/MainActivity.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
import it.niedermann.nextcloud.deck.ui.accountswitcher.AccountSwitcherDialog;
9090
import it.niedermann.nextcloud.deck.ui.board.ArchiveBoardListener;
9191
import it.niedermann.nextcloud.deck.ui.board.DeleteBoardListener;
92+
import it.niedermann.nextcloud.deck.ui.board.ShareBoardLinkListener;
9293
import it.niedermann.nextcloud.deck.ui.board.edit.EditBoardDialogFragment;
9394
import it.niedermann.nextcloud.deck.ui.board.edit.EditBoardListener;
9495
import it.niedermann.nextcloud.deck.ui.card.CardActionListener;
@@ -123,6 +124,7 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
123124
DeleteBoardListener,
124125
EditBoardListener,
125126
ArchiveBoardListener,
127+
ShareBoardLinkListener,
126128
OnScrollListener,
127129
CreateCardListener,
128130
CardActionListener,
@@ -1103,4 +1105,18 @@ protected void showExceptionDialog(@NonNull Throwable throwable, @Nullable Accou
11031105
.newInstance(throwable, account)
11041106
.show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName()));
11051107
}
1108+
1109+
@Override
1110+
public void onShareBoardLink(Board board) {
1111+
mainViewModel.getAccountFuture(board.getAccountId()).thenAcceptAsync(account -> {
1112+
final int shareLinkRes = account.getServerDeckVersionAsObject().getShareBoardLinkResource();
1113+
final var shareIntent = new Intent()
1114+
.setAction(Intent.ACTION_SEND)
1115+
.setType(TEXT_PLAIN)
1116+
.putExtra(Intent.EXTRA_SUBJECT, board.getTitle())
1117+
.putExtra(Intent.EXTRA_TITLE, board.getTitle())
1118+
.putExtra(Intent.EXTRA_TEXT, account.getUrl() + getString(shareLinkRes, board.getId()));
1119+
startActivity(Intent.createChooser(shareIntent, board.getTitle()));
1120+
}, ContextCompat.getMainExecutor(this));
1121+
}
11061122
}

app/src/main/res/menu/navigation_context_menu.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<menu xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:app="http://schemas.android.com/apk/res-auto">
4+
<item
5+
android:id="@+id/share_link"
6+
android:orderInCategory="10"
7+
android:title="@string/share_link"
8+
app:showAsAction="never" />
49
<item
510
android:id="@+id/edit_board"
611
android:orderInCategory="10"

app/src/main/res/values/strings.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,9 @@
110110
<string name="url_fragment_share_card_pre_1_0_0" translatable="false">/index.php/apps/deck/#!/board/%1$d/card/%2$d</string>
111111
<string name="url_fragment_share_card_since_1_0_0" translatable="false">/index.php/apps/deck/#/board/%1$d/card/%2$d</string>
112112
<string name="url_fragment_share_card_since_1_12_0" translatable="false">/index.php/apps/deck/board/%1$d/card/%2$d</string>
113+
<string name="url_fragment_share_board_pre_1_0_0" translatable="false">/index.php/apps/deck/#!/board/%1$d</string>
114+
<string name="url_fragment_share_board_since_1_0_0" translatable="false">/index.php/apps/deck/#/board/%1$d</string>
115+
<string name="url_fragment_share_board_since_1_12_0" translatable="false">/index.php/apps/deck/board/%1$d</string>
113116
<string name="url_faq_push_notifications" translatable="false">https://github.com/stefan-niedermann/nextcloud-deck/blob/master/FAQ.md#how-to-receive-notifications-when-a-due-date-is-reached</string>
114117

115118
<string name="card_edit_details">Details</string>

0 commit comments

Comments
 (0)