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 a9d68614b..9575e8f6f 100644 --- a/app/src/main/java/com/nextcloud/talk/api/NcApi.java +++ b/app/src/main/java/com/nextcloud/talk/api/NcApi.java @@ -289,4 +289,13 @@ public interface NcApi { @Url String url, @Query("search") String query, @Nullable @Query("limit") Integer limit); + // Url is: /api/{apiVersion}/room/{token}/favorite + @POST + Observable addConversationToFavorites(@Header("Authorization") String authorization, + @Url String url); + + // Url is: /api/{apiVersion}/room/{token}/favorite + @DELETE + Observable removeConversationFromFavorites(@Header("Authorization") String authorization, + @Url String url); } 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 906f520f7..3df58326d 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 @@ -63,6 +63,8 @@ public class Room { @JsonField(name = "sessionId") public String sessionId; public String password; + @JsonField(name = "isFavorite") + public boolean isFavorite; public boolean isPublic() { return (RoomType.ROOM_PUBLIC_CALL.equals(type)); 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 728a0a6f2..1e9160b4a 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java +++ b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java @@ -187,4 +187,8 @@ public class ApiUtils { return NextcloudTalkApplication.getSharedApplication(). getApplicationContext().getResources().getString(R.string.nc_push_server_url) + "/devices"; } + + public static String getUrlForConversationFavorite(String baseUrl, String roomToken) { + return baseUrl + ocsApiVersion + "/room/" + roomToken + "/favorite"; + } } diff --git a/app/src/main/java/com/nextcloud/talk/utils/emoticons/EmoticonUtils.java b/app/src/main/java/com/nextcloud/talk/utils/emoticons/EmoticonUtils.java index 8dbc1705d..9ffce4138 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/emoticons/EmoticonUtils.java +++ b/app/src/main/java/com/nextcloud/talk/utils/emoticons/EmoticonUtils.java @@ -132,7 +132,7 @@ public final class EmoticonUtils { if (!TextUtils.isEmpty(text)) { // Regexp acquired from https://gist.github.com/sergeychilingaryan/94902985a636658496cb69c300bba05f - String regexString = "(?:[\\u2700-\\u27bf]|" + + String unicode10regexString = "(?:[\\u2700-\\u27bf]|" + "(?:[\\ud83c\\udde6-\\ud83c\\uddff]){2}|" + "[\\ud800\\udc00-\\uDBFF\\uDFFF]|[\\u2600-\\u26FF])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|[\\ud83c\\udffb-\\ud83c\\udfff])?" + @@ -143,7 +143,8 @@ public final class EmoticonUtils { "[\\ud800\\udc00-\\uDBFF\\uDFFF]|[\\u2600-\\u26FF])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|[\\ud83c\\udffb-\\ud83c\\udfff])?)*|" + "[\\u0023-\\u0039]\\ufe0f?\\u20e3|\\u3299|\\u3297|\\u303d|\\u3030|\\u24c2|[\\ud83c\\udd70-\\ud83c\\udd71]|[\\ud83c\\udd7e-\\ud83c\\udd7f]|\\ud83c\\udd8e|[\\ud83c\\udd91-\\ud83c\\udd9a]|[\\ud83c\\udde6-\\ud83c\\uddff]|[\\ud83c\\ude01-\\ud83c\\ude02]|\\ud83c\\ude1a|\\ud83c\\ude2f|[\\ud83c\\ude32-\\ud83c\\ude3a]|[\\ud83c\\ude50-\\ud83c\\ude51]|\\u203c|\\u2049|[\\u25aa-\\u25ab]|\\u25b6|\\u25c0|[\\u25fb-\\u25fe]|\\u00a9|\\u00ae|\\u2122|\\u2139|\\ud83c\\udc04|[\\u2600-\\u26FF]|\\u2b05|\\u2b06|\\u2b07|\\u2b1b|\\u2b1c|\\u2b50|\\u2b55|\\u231a|\\u231b|\\u2328|\\u23cf|[\\u23e9-\\u23f3]|[\\u23f8-\\u23fa]|\\ud83c\\udccf|\\u2934|\\u2935|[\\u2190-\\u21ff]"; - final Matcher matcher = Pattern.compile(regexString, Pattern.UNICODE_CASE).matcher(text); + + final Matcher matcher = Pattern.compile(unicode10regexString, Pattern.UNICODE_CASE).matcher(text); while (matcher.find()) { String unicode = text.subSequence(matcher.start(), matcher.end()).toString(); // quick hack