diff --git a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java
index a297e6ff9..dadbfed48 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java
@@ -132,6 +132,14 @@ public class CallMenuController extends BaseController implements FlexibleAdapte
menuItems.add(new MenuItem(getResources().getString(R.string.nc_configure_room), 0, null));
}
+ if (conversation.isPinned()) {
+ menuItems.add(new MenuItem(getResources().getString(R.string.nc_unpin), 97, getResources()
+ .getDrawable(R.drawable.ic_unpin_grey600_24px)));
+ } else {
+ menuItems.add(new MenuItem(getResources().getString(R.string.nc_pin_to_top), 98, getResources()
+ .getDrawable(R.drawable.ic_pin_grey600_24px)));
+ }
+
if (conversation.isNameEditable()) {
menuItems.add(new MenuItem(getResources().getString(R.string.nc_rename), 2, getResources().getDrawable(R.drawable
.ic_pencil_grey600_24dp)));
@@ -202,7 +210,7 @@ public class CallMenuController extends BaseController implements FlexibleAdapte
conversation.setPassword("");
}
- if (tag > 0 && tag < 10) {
+ if (tag > 0 && tag < 11) {
bundle.putInt(BundleKeys.KEY_OPERATION_CODE, tag);
if (tag != 2 && tag != 4 && tag != 6 && tag != 7) {
eventBus.post(new BottomSheetLockEvent(false, 0, false, false));
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java
index f6ee4e91a..e6a24e50f 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java
@@ -163,7 +163,7 @@ public class OperationsMenuController extends BaseController {
currentUser = userUtils.getCurrentUser();
OperationsObserver operationsObserver = new OperationsObserver();
- if (!TextUtils.isEmpty(callUrl)) {
+ if (!TextUtils.isEmpty(callUrl) ) {
conversationToken = callUrl.substring(callUrl.lastIndexOf("/") + 1, callUrl.length());
if (callUrl.contains("/index.php")) {
baseUrl = callUrl.substring(0, callUrl.indexOf("/index.php"));
@@ -316,6 +316,24 @@ public class OperationsMenuController extends BaseController {
});
break;
+ case 97:
+ case 98:
+ if (operationCode == 97) {
+ ncApi.unpinConversation(credentials, ApiUtils.getUrlForConversationPin(currentUser.getBaseUrl(),
+ conversation.getToken()))
+ .subscribeOn(Schedulers.newThread())
+ .observeOn(AndroidSchedulers.mainThread())
+ .retry(1)
+ .subscribe(operationsObserver);
+ } else {
+ ncApi.pinConversation(credentials, ApiUtils.getUrlForConversationPin(currentUser.getBaseUrl(),
+ conversation.getToken()))
+ .subscribeOn(Schedulers.newThread())
+ .observeOn(AndroidSchedulers.mainThread())
+ .retry(1)
+ .subscribe(operationsObserver);
+ }
+ break;
case 99:
ncApi.joinRoom(credentials, ApiUtils.getUrlForSettingMyselfAsActiveParticipant(baseUrl, conversationToken),
callPassword)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index dec913c8e..e22f1d970 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -102,6 +102,8 @@
New conversation
Join via link
Join via web
+ Pin to top
+ Unpin
Select contacts