Skip to content

[AND-421] Message Reminders #5779

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 16 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 113 additions & 0 deletions stream-chat-android-client/api/stream-chat-android-client.api
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ public final class io/getstream/chat/android/client/ChatClient {
public final fun createChannel (Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/client/query/CreateChannelParams;)Lio/getstream/result/call/Call;
public final fun createChannel (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/Map;)Lio/getstream/result/call/Call;
public final fun createDraftMessage (Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/DraftMessage;)Lio/getstream/result/call/Call;
public final fun createReminder (Ljava/lang/String;Ljava/util/Date;)Lio/getstream/result/call/Call;
public final fun createVideoCall (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lio/getstream/result/call/Call;
public final fun deleteChannel (Ljava/lang/String;Ljava/lang/String;)Lio/getstream/result/call/Call;
public final fun deleteDevice (Lio/getstream/chat/android/models/Device;)Lio/getstream/result/call/Call;
Expand All @@ -53,6 +54,7 @@ public final class io/getstream/chat/android/client/ChatClient {
public final fun deletePoll (Ljava/lang/String;)Lio/getstream/result/call/Call;
public final fun deleteReaction (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lio/getstream/result/call/Call;
public static synthetic fun deleteReaction$default (Lio/getstream/chat/android/client/ChatClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lio/getstream/result/call/Call;
public final fun deleteReminder (Ljava/lang/String;)Lio/getstream/result/call/Call;
public final fun devToken (Ljava/lang/String;)Ljava/lang/String;
public final fun disableSlowMode (Ljava/lang/String;Ljava/lang/String;)Lio/getstream/result/call/Call;
public final fun disconnect (Z)Lio/getstream/result/call/Call;
Expand Down Expand Up @@ -146,6 +148,8 @@ public final class io/getstream/chat/android/client/ChatClient {
public static synthetic fun queryDrafts$default (Lio/getstream/chat/android/client/ChatClient;Lio/getstream/chat/android/models/FilterObject;ILjava/lang/String;Lio/getstream/chat/android/models/querysort/QuerySorter;ILjava/lang/Object;)Lio/getstream/result/call/Call;
public final fun queryMembers (Ljava/lang/String;Ljava/lang/String;IILio/getstream/chat/android/models/FilterObject;Lio/getstream/chat/android/models/querysort/QuerySorter;Ljava/util/List;)Lio/getstream/result/call/Call;
public static synthetic fun queryMembers$default (Lio/getstream/chat/android/client/ChatClient;Ljava/lang/String;Ljava/lang/String;IILio/getstream/chat/android/models/FilterObject;Lio/getstream/chat/android/models/querysort/QuerySorter;Ljava/util/List;ILjava/lang/Object;)Lio/getstream/result/call/Call;
public final fun queryReminders (Lio/getstream/chat/android/models/FilterObject;ILjava/lang/String;Lio/getstream/chat/android/models/querysort/QuerySorter;)Lio/getstream/result/call/Call;
public static synthetic fun queryReminders$default (Lio/getstream/chat/android/client/ChatClient;Lio/getstream/chat/android/models/FilterObject;ILjava/lang/String;Lio/getstream/chat/android/models/querysort/QuerySorter;ILjava/lang/Object;)Lio/getstream/result/call/Call;
public final fun queryThreads (Lio/getstream/chat/android/client/api/models/QueryThreadsRequest;)Lio/getstream/result/call/Call;
public final fun queryThreadsResult (Lio/getstream/chat/android/client/api/models/QueryThreadsRequest;)Lio/getstream/result/call/Call;
public final fun queryUsers (Lio/getstream/chat/android/client/api/models/QueryUsersRequest;)Lio/getstream/result/call/Call;
Expand Down Expand Up @@ -217,6 +221,7 @@ public final class io/getstream/chat/android/client/ChatClient {
public final fun updateChannelPartial (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Ljava/util/List;)Lio/getstream/result/call/Call;
public static synthetic fun updateChannelPartial$default (Lio/getstream/chat/android/client/ChatClient;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Ljava/util/List;ILjava/lang/Object;)Lio/getstream/result/call/Call;
public final fun updateMessage (Lio/getstream/chat/android/models/Message;)Lio/getstream/result/call/Call;
public final fun updateReminder (Ljava/lang/String;Ljava/util/Date;)Lio/getstream/result/call/Call;
public final fun updateUser (Lio/getstream/chat/android/models/User;)Lio/getstream/result/call/Call;
public final fun updateUsers (Ljava/util/List;)Lio/getstream/result/call/Call;
}
Expand Down Expand Up @@ -1994,6 +1999,33 @@ public final class io/getstream/chat/android/client/events/NotificationMutesUpda
public fun toString ()Ljava/lang/String;
}

public final class io/getstream/chat/android/client/events/NotificationReminderDueEvent : io/getstream/chat/android/client/events/CidEvent {
public fun <init> (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/MessageReminder;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/util/Date;
public final fun component3 ()Ljava/lang/String;
public final fun component4 ()Ljava/lang/String;
public final fun component5 ()Ljava/lang/String;
public final fun component6 ()Ljava/lang/String;
public final fun component7 ()Ljava/lang/String;
public final fun component8 ()Ljava/lang/String;
public final fun component9 ()Lio/getstream/chat/android/models/MessageReminder;
public final fun copy (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/MessageReminder;)Lio/getstream/chat/android/client/events/NotificationReminderDueEvent;
public static synthetic fun copy$default (Lio/getstream/chat/android/client/events/NotificationReminderDueEvent;Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/MessageReminder;ILjava/lang/Object;)Lio/getstream/chat/android/client/events/NotificationReminderDueEvent;
public fun equals (Ljava/lang/Object;)Z
public fun getChannelId ()Ljava/lang/String;
public fun getChannelType ()Ljava/lang/String;
public fun getCid ()Ljava/lang/String;
public fun getCreatedAt ()Ljava/util/Date;
public final fun getMessageId ()Ljava/lang/String;
public fun getRawCreatedAt ()Ljava/lang/String;
public final fun getReminder ()Lio/getstream/chat/android/models/MessageReminder;
public fun getType ()Ljava/lang/String;
public final fun getUserId ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class io/getstream/chat/android/client/events/NotificationRemovedFromChannelEvent : io/getstream/chat/android/client/events/CidEvent, io/getstream/chat/android/client/events/HasChannel, io/getstream/chat/android/client/events/HasMember {
public fun <init> (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/Member;Lio/getstream/chat/android/models/User;)V
public final fun component1 ()Ljava/lang/String;
Expand Down Expand Up @@ -2200,6 +2232,87 @@ public final class io/getstream/chat/android/client/events/ReactionUpdateEvent :
public fun toString ()Ljava/lang/String;
}

public final class io/getstream/chat/android/client/events/ReminderCreatedEvent : io/getstream/chat/android/client/events/CidEvent {
public fun <init> (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/MessageReminder;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/util/Date;
public final fun component3 ()Ljava/lang/String;
public final fun component4 ()Ljava/lang/String;
public final fun component5 ()Ljava/lang/String;
public final fun component6 ()Ljava/lang/String;
public final fun component7 ()Ljava/lang/String;
public final fun component8 ()Ljava/lang/String;
public final fun component9 ()Lio/getstream/chat/android/models/MessageReminder;
public final fun copy (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/MessageReminder;)Lio/getstream/chat/android/client/events/ReminderCreatedEvent;
public static synthetic fun copy$default (Lio/getstream/chat/android/client/events/ReminderCreatedEvent;Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/MessageReminder;ILjava/lang/Object;)Lio/getstream/chat/android/client/events/ReminderCreatedEvent;
public fun equals (Ljava/lang/Object;)Z
public fun getChannelId ()Ljava/lang/String;
public fun getChannelType ()Ljava/lang/String;
public fun getCid ()Ljava/lang/String;
public fun getCreatedAt ()Ljava/util/Date;
public final fun getMessageId ()Ljava/lang/String;
public fun getRawCreatedAt ()Ljava/lang/String;
public final fun getReminder ()Lio/getstream/chat/android/models/MessageReminder;
public fun getType ()Ljava/lang/String;
public final fun getUserId ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class io/getstream/chat/android/client/events/ReminderDeletedEvent : io/getstream/chat/android/client/events/CidEvent {
public fun <init> (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/MessageReminder;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/util/Date;
public final fun component3 ()Ljava/lang/String;
public final fun component4 ()Ljava/lang/String;
public final fun component5 ()Ljava/lang/String;
public final fun component6 ()Ljava/lang/String;
public final fun component7 ()Ljava/lang/String;
public final fun component8 ()Ljava/lang/String;
public final fun component9 ()Lio/getstream/chat/android/models/MessageReminder;
public final fun copy (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/MessageReminder;)Lio/getstream/chat/android/client/events/ReminderDeletedEvent;
public static synthetic fun copy$default (Lio/getstream/chat/android/client/events/ReminderDeletedEvent;Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/MessageReminder;ILjava/lang/Object;)Lio/getstream/chat/android/client/events/ReminderDeletedEvent;
public fun equals (Ljava/lang/Object;)Z
public fun getChannelId ()Ljava/lang/String;
public fun getChannelType ()Ljava/lang/String;
public fun getCid ()Ljava/lang/String;
public fun getCreatedAt ()Ljava/util/Date;
public final fun getMessageId ()Ljava/lang/String;
public fun getRawCreatedAt ()Ljava/lang/String;
public final fun getReminder ()Lio/getstream/chat/android/models/MessageReminder;
public fun getType ()Ljava/lang/String;
public final fun getUserId ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class io/getstream/chat/android/client/events/ReminderUpdatedEvent : io/getstream/chat/android/client/events/CidEvent {
public fun <init> (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/MessageReminder;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/util/Date;
public final fun component3 ()Ljava/lang/String;
public final fun component4 ()Ljava/lang/String;
public final fun component5 ()Ljava/lang/String;
public final fun component6 ()Ljava/lang/String;
public final fun component7 ()Ljava/lang/String;
public final fun component8 ()Ljava/lang/String;
public final fun component9 ()Lio/getstream/chat/android/models/MessageReminder;
public final fun copy (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/MessageReminder;)Lio/getstream/chat/android/client/events/ReminderUpdatedEvent;
public static synthetic fun copy$default (Lio/getstream/chat/android/client/events/ReminderUpdatedEvent;Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/MessageReminder;ILjava/lang/Object;)Lio/getstream/chat/android/client/events/ReminderUpdatedEvent;
public fun equals (Ljava/lang/Object;)Z
public fun getChannelId ()Ljava/lang/String;
public fun getChannelType ()Ljava/lang/String;
public fun getCid ()Ljava/lang/String;
public fun getCreatedAt ()Ljava/util/Date;
public final fun getMessageId ()Ljava/lang/String;
public fun getRawCreatedAt ()Ljava/lang/String;
public final fun getReminder ()Lio/getstream/chat/android/models/MessageReminder;
public fun getType ()Ljava/lang/String;
public final fun getUserId ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class io/getstream/chat/android/client/events/TypingStartEvent : io/getstream/chat/android/client/events/CidEvent, io/getstream/chat/android/client/events/UserEvent {
public fun <init> (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Lio/getstream/chat/android/models/User;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
public final fun component1 ()Ljava/lang/String;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,12 +174,14 @@ import io.getstream.chat.android.models.InitializationState
import io.getstream.chat.android.models.Member
import io.getstream.chat.android.models.MemberData
import io.getstream.chat.android.models.Message
import io.getstream.chat.android.models.MessageReminder
import io.getstream.chat.android.models.Mute
import io.getstream.chat.android.models.Option
import io.getstream.chat.android.models.Poll
import io.getstream.chat.android.models.PollConfig
import io.getstream.chat.android.models.PushMessage
import io.getstream.chat.android.models.QueryDraftsResult
import io.getstream.chat.android.models.QueryRemindersResult
import io.getstream.chat.android.models.QueryThreadsResult
import io.getstream.chat.android.models.Reaction
import io.getstream.chat.android.models.SearchMessagesResult
Expand Down Expand Up @@ -3837,6 +3839,66 @@ internal constructor(
)
}

/**
* Creates a reminder for a message.
*
* @param messageId The message id.
* @param remindAt The date when the reminder should be triggered. If null, this is a bookmark type reminder without
* a notification.
*
* @return Executable async [Call] responsible for creating the reminder.
*/
@CheckResult
public fun createReminder(messageId: String, remindAt: Date?): Call<MessageReminder> {
return api.createReminder(messageId, remindAt)
}

/**
* Updates an existing reminder for a message.
*
* @param messageId The message id.
* @param remindAt The date when the reminder should be triggered. If null, this is a bookmark type reminder without
* a notification.
*
* @return Executable async [Call] responsible for updating the reminder.
*/
@CheckResult
public fun updateReminder(messageId: String, remindAt: Date?): Call<MessageReminder> {
return api.updateReminder(messageId, remindAt)
}

/**
* Deletes a reminder for a message.
*
* @param messageId The message id whose reminder should be deleted.
*
* @return Executable async [Call] responsible for deleting the reminder.
*/
@CheckResult
public fun deleteReminder(messageId: String): Call<Unit> {
return api.deleteReminder(messageId)
}

/**
* Queries the message reminders for the current user matching the provided filters.
*
* @param filter The [FilterObject] to filter the reminders.
* @param limit The maximum number of reminders to return.
* @param next The pagination token for the next page of results.
* @param sort The sorter object to apply to the query.
*
* @return Executable async [Call] responsible for obtaining the message reminders.
*/
@CheckResult
public fun queryReminders(
filter: FilterObject,
limit: Int,
next: String? = null,
sort: QuerySorter<MessageReminder> = QuerySortByField(),
): Call<QueryRemindersResult> {
return api.queryReminders(filter, limit, next, sort)
}

private fun warmUp() {
if (config.warmUp) {
api.warmUp()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,13 @@ import io.getstream.chat.android.models.GuestUser
import io.getstream.chat.android.models.Member
import io.getstream.chat.android.models.MemberData
import io.getstream.chat.android.models.Message
import io.getstream.chat.android.models.MessageReminder
import io.getstream.chat.android.models.Mute
import io.getstream.chat.android.models.Option
import io.getstream.chat.android.models.Poll
import io.getstream.chat.android.models.PollConfig
import io.getstream.chat.android.models.QueryDraftsResult
import io.getstream.chat.android.models.QueryRemindersResult
import io.getstream.chat.android.models.QueryThreadsResult
import io.getstream.chat.android.models.Reaction
import io.getstream.chat.android.models.SearchMessagesResult
Expand Down Expand Up @@ -563,6 +565,23 @@ internal interface ChatApi {
@CheckResult
fun deletePoll(pollId: String): Call<Unit>

@CheckResult
fun createReminder(messageId: String, remindAt: Date?): Call<MessageReminder>

@CheckResult
fun updateReminder(messageId: String, remindAt: Date?): Call<MessageReminder>

@CheckResult
fun deleteReminder(messageId: String): Call<Unit>

@CheckResult
fun queryReminders(
filter: FilterObject,
limit: Int,
next: String?,
sort: QuerySorter<MessageReminder>,
): Call<QueryRemindersResult>

fun warmUp()

fun releaseConnection()
Expand Down
Loading
Loading