chats: add Chat and ChatMessage entities, add Pleroma API calls

main
Alibek Omarov 4 years ago
parent fe0e68ba5c
commit 752f6ad35b
  1. 42
      app/src/main/java/com/keylesspalace/tusky/entity/Chat.kt
  2. 53
      app/src/main/java/com/keylesspalace/tusky/network/MastodonApi.kt

@ -0,0 +1,42 @@
/* Copyright 2020 Alibek Omarov
*
* This file is a part of Husky.
*
* 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.
*
* Husky 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 Husky; if not,
* see <http://www.gnu.org/licenses>. */
package com.keylesspalace.tusky.entity
import com.google.gson.annotations.SerializedName
import java.util.*
data class ChatMessage(
val id: String,
val content: String,
@SerializedName("chat_id") val chatId: String,
@SerializedName("account_id") val accountId: String,
@SerializedName("created_at") val createdAt: Date,
val attachment: Attachment?,
val emojis: List<Emoji>
)
data class Chat(
val account: Account,
val id: String,
val unread: Int,
@SerializedName("last_message") val lastMessage: ChatMessage?,
@SerializedName("updated_at") val updatedAt: Date
)
data class NewChatMessage(
val content: String,
val media_id: String
)

@ -622,4 +622,57 @@ interface MastodonApi {
@Url path: String
): Single<Response<StickerPack>>
// NOT AN API CALLS NOT AN API CALLS NOT AN API CALLS NOT AN API CALLS
@POST("api/v1/pleroma/chats/{id}/messages/{message_id}/read")
fun markChatMessageAsRead(
@Path("id") chatId: String,
@Path("message_id") messageId: String
): Single<ChatMessage>
@DELETE("api/v1/pleroma/chats/{id}/messages/{message_id}")
fun deleteChatMessage(
@Path("id") chatId: String,
@Path("message_id") messageId: String
): Single<ChatMessage>
@GET("api/v1/pleroma/chats")
fun getChats(
@Query("max_id") maxId: String?,
@Query("min_id") minId: String?,
@Query("since_id") sinceId: String?,
@Query("offset") offset: Int?,
@Query("limit") limit: Int?
): Single<List<Chat>>
@GET("api/v1/pleroma/chats/{id}/messages")
fun getChatMessages(
@Path("id") chatId: String,
@Query("max_id") maxId: String?,
@Query("min_id") minId: String?,
@Query("since_id") sinceId: String?,
@Query("offset") offset: Int?,
@Query("limit") limit: Int?
): Single<List<ChatMessage>>
@POST("api/v1/pleroma/chats/{id}/messages")
fun createChatMessage(
@Path("id") chatId: String,
@Body chatMessage: NewChatMessage
): Single<ChatMessage>
@POST("api/v1/pleroma/chats/{id}/read")
fun markChatAsRead(
@Path("id") chatId: String,
@Field("last_read_id") lastReadId: String
): Single<Chat>
@POST("api/v1/pleroma/chats/by-account-id/{id}")
fun createChat(
@Path("id") accountId: String
): Single<Chat>
@GET("api/v1/pleroma/chats/{id}")
fun getChat(
@Path("id") chatId: String
): Single<Chat>
}

Loading…
Cancel
Save