diff --git a/app/src/main/java/com/nextcloud/talk/api/NcApi.java b/app/src/main/java/com/nextcloud/talk/api/NcApi.java index 9575e8f6f..1088d81f9 100644 --- a/app/src/main/java/com/nextcloud/talk/api/NcApi.java +++ b/app/src/main/java/com/nextcloud/talk/api/NcApi.java @@ -289,13 +289,13 @@ public interface NcApi { @Url String url, @Query("search") String query, @Nullable @Query("limit") Integer limit); - // Url is: /api/{apiVersion}/room/{token}/favorite + // Url is: /api/{apiVersion}/room/{token}/pin @POST - Observable addConversationToFavorites(@Header("Authorization") String authorization, + Observable pinConversation(@Header("Authorization") String authorization, @Url String url); - // Url is: /api/{apiVersion}/room/{token}/favorite + // Url is: /api/{apiVersion}/room/{token}/pin @DELETE - Observable removeConversationFromFavorites(@Header("Authorization") String authorization, + Observable unpinConversation(@Header("Authorization") String authorization, @Url String url); } diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java index d26f1b37b..0f8288e13 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java +++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java @@ -22,6 +22,7 @@ package com.nextcloud.talk.models.json.chat; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; import com.nextcloud.talk.R; +import com.nextcloud.talk.models.json.converters.EnumSystemMessageTypeConverter; import com.nextcloud.talk.utils.ApiUtils; import com.stfalcon.chatkit.commons.models.IMessage; import com.stfalcon.chatkit.commons.models.IUser; @@ -37,6 +38,24 @@ import lombok.Data; @Data @JsonObject public class ChatMessage implements IMessage { + + public enum SystemMessageType { + DUMMY, + CONVERSATION_CREATED, + CONVERSATION_RENAMED, + CALL_JOINED, + CALL_LEFT, + CALL_ENDED, + GUESTS_ALLOWED, + GUESTS_DISALLOWED, + PASSWORD_SET, + PASSWORD_REMOVED, + USER_ADDED, + USER_REMOVED, + MODERATOR_PROMOTED, + MODERATOR_DEMOTED + } + String baseUrl; @JsonField(name = "id") int jsonMessageId; @@ -57,8 +76,13 @@ public class ChatMessage implements IMessage { String message; @JsonField(name = "messageParameters") HashMap> messageParameters; + + @JsonField(name = "systemMessage", typeConverter = EnumSystemMessageTypeConverter.class) + SystemMessageType systemMessageType; + boolean isGrouped; + public String getBaseUrl() { return baseUrl; } diff --git a/app/src/main/java/com/nextcloud/talk/models/json/converters/EnumSystemMessageTypeConverter.java b/app/src/main/java/com/nextcloud/talk/models/json/converters/EnumSystemMessageTypeConverter.java new file mode 100644 index 000000000..110484642 --- /dev/null +++ b/app/src/main/java/com/nextcloud/talk/models/json/converters/EnumSystemMessageTypeConverter.java @@ -0,0 +1,114 @@ +/* + * Nextcloud Talk application + * + * @author Mario Danic + * Copyright (C) 2017-2018 Mario Danic + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.nextcloud.talk.models.json.converters; + +import com.bluelinelabs.logansquare.typeconverters.StringBasedTypeConverter; +import com.nextcloud.talk.models.json.chat.ChatMessage; + +import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.*; + +/* + + conversation_created - {actor} created the conversation + conversation_renamed - {actor} renamed the conversation from "foo" to "bar" + call_joined - {actor} joined the call + call_left - {actor} left the call + call_ended - Call with {user1}, {user2}, {user3}, {user4} and {user5} (Duration 30:23) + guests_allowed - {actor} allowed guests in the conversation + guests_disallowed - {actor} disallowed guests in the conversation + password_set - {actor} set a password for the conversation + password_removed - {actor} removed the password for the conversation + user_added - {actor} added {user} to the conversation + user_removed - {actor} removed {user} from the conversation + moderator_promoted - {actor} promoted {user} to moderator + moderator_demoted - {actor} demoted {user} from moderator + + */ +public class EnumSystemMessageTypeConverter extends StringBasedTypeConverter { + @Override + public ChatMessage.SystemMessageType getFromString(String string) { + switch (string) { + case "conversation_created": + return CONVERSATION_CREATED; + case "conversation_renamed": + return CONVERSATION_RENAMED; + case "call_joined": + return CALL_JOINED; + case "call_left": + return CALL_LEFT; + case "call_ended": + return CALL_ENDED; + case "guests_allowed": + return GUESTS_ALLOWED; + case "guests_disallowed": + return GUESTS_DISALLOWED; + case "password_set": + return PASSWORD_SET; + case "password_removed": + return PASSWORD_REMOVED; + case "user_added": + return USER_ADDED; + case "user_removed": + return USER_REMOVED; + case "moderator_promoted": + return MODERATOR_PROMOTED; + case "moderator_demoted": + return MODERATOR_DEMOTED; + default: + return DUMMY; + } + } + + @Override + public String convertToString(ChatMessage.SystemMessageType object) { + + switch (object) { + case CONVERSATION_CREATED: + return "conversation_created"; + case CONVERSATION_RENAMED: + return "conversation_renamed"; + case CALL_JOINED: + return "conversation_renamed"; + case CALL_LEFT: + return "call_left"; + case CALL_ENDED: + return "call_ended"; + case GUESTS_ALLOWED: + return "guests_allowed"; + case GUESTS_DISALLOWED: + return "guests_disallowed"; + case PASSWORD_SET: + return "password_set"; + case PASSWORD_REMOVED: + return "password_removed"; + case USER_ADDED: + return "user_added"; + case USER_REMOVED: + return "user_removed"; + case MODERATOR_PROMOTED: + return "moderator_promoted"; + case MODERATOR_DEMOTED: + return "moderator_demoted"; + default: + return ""; + } + } +} diff --git a/app/src/main/java/com/nextcloud/talk/models/json/rooms/Room.java b/app/src/main/java/com/nextcloud/talk/models/json/rooms/Room.java index b9a7981b8..792616aec 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/rooms/Room.java +++ b/app/src/main/java/com/nextcloud/talk/models/json/rooms/Room.java @@ -64,8 +64,8 @@ public class Room { @JsonField(name = "sessionId") public String sessionId; public String password; - @JsonField(name = "isFavorite") - public boolean isFavorite; + @JsonField(name = "isPinned") + public boolean isPinned; @JsonField(name = "lastActivity") public long lastActivity; @JsonField(name = "unreadMessages") diff --git a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java index 1e9160b4a..65b7f3667 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java +++ b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java @@ -188,7 +188,7 @@ public class ApiUtils { getApplicationContext().getResources().getString(R.string.nc_push_server_url) + "/devices"; } - public static String getUrlForConversationFavorite(String baseUrl, String roomToken) { - return baseUrl + ocsApiVersion + "/room/" + roomToken + "/favorite"; + public static String getUrlForConversationPin(String baseUrl, String roomToken) { + return baseUrl + ocsApiVersion + "/room/" + roomToken + "/pin"; } }