@sendbird/sendbird-platform-sdk-typescript 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.test +2 -0
- package/.openapi-generator/FILES +158 -0
- package/.openapi-generator/VERSION +1 -0
- package/.openapi-generator-ignore +23 -0
- package/AnnouncementApi.md +100 -0
- package/BotApi.md +401 -0
- package/CHANGELOG +83 -0
- package/GroupChannelApi.md +1429 -0
- package/MessageApi.md +826 -0
- package/MetadataApi.md +274 -0
- package/ModerationApi.md +338 -0
- package/OpenChannelApi.md +540 -0
- package/PinAMessageApi.md +73 -0
- package/PollApi.md +787 -0
- package/PrivacyApi.md +251 -0
- package/PushNotificationsApi.md +124 -0
- package/README.md +104 -0
- package/ReportApi.md +554 -0
- package/ScheduledMessageApi.md +524 -0
- package/StatisticsApi.md +125 -0
- package/UserApi.md +1868 -0
- package/WebhookApi.md +132 -0
- package/apis/AnnouncementApi.ts +96 -0
- package/apis/BotApi.ts +471 -0
- package/apis/GroupChannelApi.ts +1865 -0
- package/apis/MessageApi.ts +1150 -0
- package/apis/MetadataApi.ts +365 -0
- package/apis/ModerationApi.ts +449 -0
- package/apis/OpenChannelApi.ts +676 -0
- package/apis/StatisticsApi.ts +155 -0
- package/apis/UserApi.ts +2454 -0
- package/apis/baseapi.ts +37 -0
- package/apis/exception.ts +15 -0
- package/auth/auth.ts +54 -0
- package/catalog-info.yaml +12 -0
- package/configuration.ts +66 -0
- package/dist/apis/AnnouncementApi.d.ts +11 -0
- package/dist/apis/AnnouncementApi.js +54 -0
- package/dist/apis/AnnouncementApi.js.map +1 -0
- package/dist/apis/BotApi.d.ts +26 -0
- package/dist/apis/BotApi.js +237 -0
- package/dist/apis/BotApi.js.map +1 -0
- package/dist/apis/GroupChannelApi.d.ts +63 -0
- package/dist/apis/GroupChannelApi.js +897 -0
- package/dist/apis/GroupChannelApi.js.map +1 -0
- package/dist/apis/MessageApi.d.ts +40 -0
- package/dist/apis/MessageApi.js +562 -0
- package/dist/apis/MessageApi.js.map +1 -0
- package/dist/apis/MetadataApi.d.ts +18 -0
- package/dist/apis/MetadataApi.js +186 -0
- package/dist/apis/MetadataApi.js.map +1 -0
- package/dist/apis/ModerationApi.d.ts +24 -0
- package/dist/apis/ModerationApi.js +224 -0
- package/dist/apis/ModerationApi.js.map +1 -0
- package/dist/apis/OpenChannelApi.d.ts +29 -0
- package/dist/apis/OpenChannelApi.js +335 -0
- package/dist/apis/OpenChannelApi.js.map +1 -0
- package/dist/apis/StatisticsApi.d.ts +13 -0
- package/dist/apis/StatisticsApi.js +83 -0
- package/dist/apis/StatisticsApi.js.map +1 -0
- package/dist/apis/UserApi.d.ts +92 -0
- package/dist/apis/UserApi.js +1185 -0
- package/dist/apis/UserApi.js.map +1 -0
- package/dist/apis/baseapi.d.ts +18 -0
- package/dist/apis/baseapi.js +22 -0
- package/dist/apis/baseapi.js.map +1 -0
- package/dist/apis/exception.d.ts +10 -0
- package/dist/apis/exception.js +10 -0
- package/dist/apis/exception.js.map +1 -0
- package/dist/auth/auth.d.ts +26 -0
- package/dist/auth/auth.js +9 -0
- package/dist/auth/auth.js.map +1 -0
- package/dist/configuration.d.ts +18 -0
- package/dist/configuration.js +17 -0
- package/dist/configuration.js.map +1 -0
- package/dist/http/http.d.ts +83 -0
- package/dist/http/http.js +145 -0
- package/dist/http/http.js.map +1 -0
- package/dist/http/isomorphic-fetch.d.ts +5 -0
- package/dist/http/isomorphic-fetch.js +27 -0
- package/dist/http/isomorphic-fetch.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/jest.config.d.ts +3 -0
- package/dist/jest.config.js +9 -0
- package/dist/jest.config.js.map +1 -0
- package/dist/jest.setup.d.ts +1 -0
- package/dist/jest.setup.js +3 -0
- package/dist/jest.setup.js.map +1 -0
- package/dist/middleware.d.ts +16 -0
- package/dist/middleware.js +13 -0
- package/dist/middleware.js.map +1 -0
- package/dist/models/AcceptAnInvitationRequest.d.ts +18 -0
- package/dist/models/AcceptAnInvitationRequest.js +23 -0
- package/dist/models/AcceptAnInvitationRequest.js.map +1 -0
- package/dist/models/AddARegistrationOrDeviceTokenRequest.d.ts +19 -0
- package/dist/models/AddARegistrationOrDeviceTokenRequest.js +29 -0
- package/dist/models/AddARegistrationOrDeviceTokenRequest.js.map +1 -0
- package/dist/models/AddARegistrationOrDeviceTokenResponse.d.ts +20 -0
- package/dist/models/AddARegistrationOrDeviceTokenResponse.js +29 -0
- package/dist/models/AddARegistrationOrDeviceTokenResponse.js.map +1 -0
- package/dist/models/AddExtraDataToAMessageRequest.d.ts +18 -0
- package/dist/models/AddExtraDataToAMessageRequest.js +17 -0
- package/dist/models/AddExtraDataToAMessageRequest.js.map +1 -0
- package/dist/models/AddExtraDataToAMessageResponse.d.ts +18 -0
- package/dist/models/AddExtraDataToAMessageResponse.js +17 -0
- package/dist/models/AddExtraDataToAMessageResponse.js.map +1 -0
- package/dist/models/BlockAUserRequest.d.ts +18 -0
- package/dist/models/BlockAUserRequest.js +23 -0
- package/dist/models/BlockAUserRequest.js.map +1 -0
- package/dist/models/BlockAUserResponse.d.ts +19 -0
- package/dist/models/BlockAUserResponse.js +23 -0
- package/dist/models/BlockAUserResponse.js.map +1 -0
- package/dist/models/CheckIfMemberResponse.d.ts +19 -0
- package/dist/models/CheckIfMemberResponse.js +23 -0
- package/dist/models/CheckIfMemberResponse.js.map +1 -0
- package/dist/models/ChooseAPushNotificationContentTemplateRequest.d.ts +18 -0
- package/dist/models/ChooseAPushNotificationContentTemplateRequest.js +17 -0
- package/dist/models/ChooseAPushNotificationContentTemplateRequest.js.map +1 -0
- package/dist/models/ChooseAPushNotificationContentTemplateResponse.d.ts +17 -0
- package/dist/models/ChooseAPushNotificationContentTemplateResponse.js +17 -0
- package/dist/models/ChooseAPushNotificationContentTemplateResponse.js.map +1 -0
- package/dist/models/CreateABotRequest.d.ts +25 -0
- package/dist/models/CreateABotRequest.js +65 -0
- package/dist/models/CreateABotRequest.js.map +1 -0
- package/dist/models/CreateABotResponse.d.ts +26 -0
- package/dist/models/CreateABotResponse.js +59 -0
- package/dist/models/CreateABotResponse.js.map +1 -0
- package/dist/models/CreateABotResponseBot.d.ts +25 -0
- package/dist/models/CreateABotResponseBot.js +65 -0
- package/dist/models/CreateABotResponseBot.js.map +1 -0
- package/dist/models/CreateABotResponseBotStyle.d.ts +21 -0
- package/dist/models/CreateABotResponseBotStyle.js +35 -0
- package/dist/models/CreateABotResponseBotStyle.js.map +1 -0
- package/dist/models/CreateAChannelMetadataRequest.d.ts +18 -0
- package/dist/models/CreateAChannelMetadataRequest.js +23 -0
- package/dist/models/CreateAChannelMetadataRequest.js.map +1 -0
- package/dist/models/CreateAChannelMetadataResponse.d.ts +18 -0
- package/dist/models/CreateAChannelMetadataResponse.js +23 -0
- package/dist/models/CreateAChannelMetadataResponse.js.map +1 -0
- package/dist/models/CreateAGroupChannelRequest.d.ts +37 -0
- package/dist/models/CreateAGroupChannelRequest.js +125 -0
- package/dist/models/CreateAGroupChannelRequest.js.map +1 -0
- package/dist/models/CreateAUserRequest.d.ts +24 -0
- package/dist/models/CreateAUserRequest.js +53 -0
- package/dist/models/CreateAUserRequest.js.map +1 -0
- package/dist/models/CreateAnOpenChannelRequest.d.ts +26 -0
- package/dist/models/CreateAnOpenChannelRequest.js +65 -0
- package/dist/models/CreateAnOpenChannelRequest.js.map +1 -0
- package/dist/models/CreateUserTokenRequest.d.ts +17 -0
- package/dist/models/CreateUserTokenRequest.js +17 -0
- package/dist/models/CreateUserTokenRequest.js.map +1 -0
- package/dist/models/CreateUserTokenResponse.d.ts +18 -0
- package/dist/models/CreateUserTokenResponse.js +23 -0
- package/dist/models/CreateUserTokenResponse.js.map +1 -0
- package/dist/models/FreezeAGroupChannelRequest.d.ts +17 -0
- package/dist/models/FreezeAGroupChannelRequest.js +17 -0
- package/dist/models/FreezeAGroupChannelRequest.js.map +1 -0
- package/dist/models/FreezeAnOpenChannelRequest.d.ts +17 -0
- package/dist/models/FreezeAnOpenChannelRequest.js +17 -0
- package/dist/models/FreezeAnOpenChannelRequest.js.map +1 -0
- package/dist/models/GetAGroupChannelResponse.d.ts +75 -0
- package/dist/models/GetAGroupChannelResponse.js +287 -0
- package/dist/models/GetAGroupChannelResponse.js.map +1 -0
- package/dist/models/GetAGroupChannelResponseAllOf.d.ts +18 -0
- package/dist/models/GetAGroupChannelResponseAllOf.js +17 -0
- package/dist/models/GetAGroupChannelResponseAllOf.js.map +1 -0
- package/dist/models/GetChannelInvitationPreferenceResponse.d.ts +17 -0
- package/dist/models/GetChannelInvitationPreferenceResponse.js +17 -0
- package/dist/models/GetChannelInvitationPreferenceResponse.js.map +1 -0
- package/dist/models/GetTotalNumberOfMessagesInAChannelResponse.d.ts +17 -0
- package/dist/models/GetTotalNumberOfMessagesInAChannelResponse.js +17 -0
- package/dist/models/GetTotalNumberOfMessagesInAChannelResponse.js.map +1 -0
- package/dist/models/GroupChannelListMembersResponse.d.ts +19 -0
- package/dist/models/GroupChannelListMembersResponse.js +23 -0
- package/dist/models/GroupChannelListMembersResponse.js.map +1 -0
- package/dist/models/GroupChatListChannelsResponse.d.ts +20 -0
- package/dist/models/GroupChatListChannelsResponse.js +29 -0
- package/dist/models/GroupChatListChannelsResponse.js.map +1 -0
- package/dist/models/HideAChannelRequest.d.ts +20 -0
- package/dist/models/HideAChannelRequest.js +35 -0
- package/dist/models/HideAChannelRequest.js.map +1 -0
- package/dist/models/InviteAsMembersRequest.d.ts +20 -0
- package/dist/models/InviteAsMembersRequest.js +35 -0
- package/dist/models/InviteAsMembersRequest.js.map +1 -0
- package/dist/models/InviteAsMembersResponse.d.ts +75 -0
- package/dist/models/InviteAsMembersResponse.js +287 -0
- package/dist/models/InviteAsMembersResponse.js.map +1 -0
- package/dist/models/InviteAsMembersResponseAllOf.d.ts +18 -0
- package/dist/models/InviteAsMembersResponseAllOf.js +17 -0
- package/dist/models/InviteAsMembersResponseAllOf.js.map +1 -0
- package/dist/models/JoinAChannelRequest.d.ts +18 -0
- package/dist/models/JoinAChannelRequest.js +23 -0
- package/dist/models/JoinAChannelRequest.js.map +1 -0
- package/dist/models/JoinChannelsRequest.d.ts +17 -0
- package/dist/models/JoinChannelsRequest.js +17 -0
- package/dist/models/JoinChannelsRequest.js.map +1 -0
- package/dist/models/LeaveAChannelRequest.d.ts +21 -0
- package/dist/models/LeaveAChannelRequest.js +35 -0
- package/dist/models/LeaveAChannelRequest.js.map +1 -0
- package/dist/models/LeaveMyGroupChannelsRequest.d.ts +17 -0
- package/dist/models/LeaveMyGroupChannelsRequest.js +17 -0
- package/dist/models/LeaveMyGroupChannelsRequest.js.map +1 -0
- package/dist/models/ListBlockedUsersResponse.d.ts +19 -0
- package/dist/models/ListBlockedUsersResponse.js +23 -0
- package/dist/models/ListBlockedUsersResponse.js.map +1 -0
- package/dist/models/ListBotsResponse.d.ts +19 -0
- package/dist/models/ListBotsResponse.js +23 -0
- package/dist/models/ListBotsResponse.js.map +1 -0
- package/dist/models/ListBotsResponseBotsInner.d.ts +32 -0
- package/dist/models/ListBotsResponseBotsInner.js +77 -0
- package/dist/models/ListBotsResponseBotsInner.js.map +1 -0
- package/dist/models/ListBotsResponseBotsInnerAi.d.ts +28 -0
- package/dist/models/ListBotsResponseBotsInnerAi.js +83 -0
- package/dist/models/ListBotsResponseBotsInnerAi.js.map +1 -0
- package/dist/models/ListBotsResponseBotsInnerBot.d.ts +24 -0
- package/dist/models/ListBotsResponseBotsInnerBot.js +59 -0
- package/dist/models/ListBotsResponseBotsInnerBot.js.map +1 -0
- package/dist/models/ListBotsResponseBotsInnerBotStyle.d.ts +21 -0
- package/dist/models/ListBotsResponseBotsInnerBotStyle.js +35 -0
- package/dist/models/ListBotsResponseBotsInnerBotStyle.js.map +1 -0
- package/dist/models/ListBotsResponseBotsInnerBotStyleColor.d.ts +19 -0
- package/dist/models/ListBotsResponseBotsInnerBotStyleColor.js +29 -0
- package/dist/models/ListBotsResponseBotsInnerBotStyleColor.js.map +1 -0
- package/dist/models/ListBotsResponseBotsInnerFirstMessagesInner.d.ts +19 -0
- package/dist/models/ListBotsResponseBotsInnerFirstMessagesInner.js +23 -0
- package/dist/models/ListBotsResponseBotsInnerFirstMessagesInner.js.map +1 -0
- package/dist/models/ListBotsResponseBotsInnerFirstMessagesInnerData.d.ts +17 -0
- package/dist/models/ListBotsResponseBotsInnerFirstMessagesInnerData.js +17 -0
- package/dist/models/ListBotsResponseBotsInnerFirstMessagesInnerData.js.map +1 -0
- package/dist/models/ListBotsResponseBotsInnerSafeguard.d.ts +20 -0
- package/dist/models/ListBotsResponseBotsInnerSafeguard.js +35 -0
- package/dist/models/ListBotsResponseBotsInnerSafeguard.js.map +1 -0
- package/dist/models/ListMessagesResponse.d.ts +18 -0
- package/dist/models/ListMessagesResponse.js +17 -0
- package/dist/models/ListMessagesResponse.js.map +1 -0
- package/dist/models/ListMyGroupChannelsResponse.d.ts +20 -0
- package/dist/models/ListMyGroupChannelsResponse.js +29 -0
- package/dist/models/ListMyGroupChannelsResponse.js.map +1 -0
- package/dist/models/ListOpenChannelsResponse.d.ts +20 -0
- package/dist/models/ListOpenChannelsResponse.js +29 -0
- package/dist/models/ListOpenChannelsResponse.js.map +1 -0
- package/dist/models/ListOperatorsResponse.d.ts +19 -0
- package/dist/models/ListOperatorsResponse.js +23 -0
- package/dist/models/ListOperatorsResponse.js.map +1 -0
- package/dist/models/ListRegistrationOrDeviceTokensResponse.d.ts +21 -0
- package/dist/models/ListRegistrationOrDeviceTokensResponse.js +35 -0
- package/dist/models/ListRegistrationOrDeviceTokensResponse.js.map +1 -0
- package/dist/models/ListUsersResponse.d.ts +19 -0
- package/dist/models/ListUsersResponse.js +23 -0
- package/dist/models/ListUsersResponse.js.map +1 -0
- package/dist/models/MarkAllMessagesAsReadRequest.d.ts +17 -0
- package/dist/models/MarkAllMessagesAsReadRequest.js +17 -0
- package/dist/models/MarkAllMessagesAsReadRequest.js.map +1 -0
- package/dist/models/MarkChannelMessagesAsReadRequest.d.ts +17 -0
- package/dist/models/MarkChannelMessagesAsReadRequest.js +17 -0
- package/dist/models/MarkChannelMessagesAsReadRequest.js.map +1 -0
- package/dist/models/MigrateMessagesAdminMessageRequest.d.ts +26 -0
- package/dist/models/MigrateMessagesAdminMessageRequest.js +65 -0
- package/dist/models/MigrateMessagesAdminMessageRequest.js.map +1 -0
- package/dist/models/MigrateMessagesFileMessageRequest.d.ts +32 -0
- package/dist/models/MigrateMessagesFileMessageRequest.js +95 -0
- package/dist/models/MigrateMessagesFileMessageRequest.js.map +1 -0
- package/dist/models/MigrateMessagesFileMessageRequestThumbnailsInner.d.ts +16 -0
- package/dist/models/MigrateMessagesFileMessageRequestThumbnailsInner.js +10 -0
- package/dist/models/MigrateMessagesFileMessageRequestThumbnailsInner.js.map +1 -0
- package/dist/models/MigrateMessagesRequest.d.ts +20 -0
- package/dist/models/MigrateMessagesRequest.js +29 -0
- package/dist/models/MigrateMessagesRequest.js.map +1 -0
- package/dist/models/MigrateMessagesRequestMessagesInner.d.ts +35 -0
- package/dist/models/MigrateMessagesRequestMessagesInner.js +113 -0
- package/dist/models/MigrateMessagesRequestMessagesInner.js.map +1 -0
- package/dist/models/MigrateMessagesTextMessageRequest.d.ts +26 -0
- package/dist/models/MigrateMessagesTextMessageRequest.js +65 -0
- package/dist/models/MigrateMessagesTextMessageRequest.js.map +1 -0
- package/dist/models/ObjectSerializer.d.ts +128 -0
- package/dist/models/ObjectSerializer.js +576 -0
- package/dist/models/ObjectSerializer.js.map +1 -0
- package/dist/models/RegisterOperatorsToAGroupChannelRequest.d.ts +17 -0
- package/dist/models/RegisterOperatorsToAGroupChannelRequest.js +17 -0
- package/dist/models/RegisterOperatorsToAGroupChannelRequest.js.map +1 -0
- package/dist/models/RemoveARegistrationOrDeviceTokenResponse.d.ts +19 -0
- package/dist/models/RemoveARegistrationOrDeviceTokenResponse.js +23 -0
- package/dist/models/RemoveARegistrationOrDeviceTokenResponse.js.map +1 -0
- package/dist/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringASpecificTokenResponse.d.ts +19 -0
- package/dist/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringASpecificTokenResponse.js +23 -0
- package/dist/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringASpecificTokenResponse.js.map +1 -0
- package/dist/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringAllDeviceTokensResponse.d.ts +19 -0
- package/dist/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringAllDeviceTokensResponse.js +23 -0
- package/dist/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringAllDeviceTokensResponse.js.map +1 -0
- package/dist/models/RemoveAllRegistrationOrDeviceTokenResponse.d.ts +19 -0
- package/dist/models/RemoveAllRegistrationOrDeviceTokenResponse.js +23 -0
- package/dist/models/RemoveAllRegistrationOrDeviceTokenResponse.js.map +1 -0
- package/dist/models/ResetChatHistoryRequest.d.ts +18 -0
- package/dist/models/ResetChatHistoryRequest.js +23 -0
- package/dist/models/ResetChatHistoryRequest.js.map +1 -0
- package/dist/models/ResetChatHistoryResponse.d.ts +17 -0
- package/dist/models/ResetChatHistoryResponse.js +17 -0
- package/dist/models/ResetChatHistoryResponse.js.map +1 -0
- package/dist/models/ScheduleAnAnnouncementRequest.d.ts +36 -0
- package/dist/models/ScheduleAnAnnouncementRequest.js +119 -0
- package/dist/models/ScheduleAnAnnouncementRequest.js.map +1 -0
- package/dist/models/ScheduleAnAnnouncementRequestCreateChannelOptions.d.ts +21 -0
- package/dist/models/ScheduleAnAnnouncementRequestCreateChannelOptions.js +41 -0
- package/dist/models/ScheduleAnAnnouncementRequestCreateChannelOptions.js.map +1 -0
- package/dist/models/ScheduleAnAnnouncementRequestMessage.d.ts +21 -0
- package/dist/models/ScheduleAnAnnouncementRequestMessage.js +41 -0
- package/dist/models/ScheduleAnAnnouncementRequestMessage.js.map +1 -0
- package/dist/models/ScheduleAnAnnouncementResponse.d.ts +42 -0
- package/dist/models/ScheduleAnAnnouncementResponse.js +155 -0
- package/dist/models/ScheduleAnAnnouncementResponse.js.map +1 -0
- package/dist/models/ScheduleAnAnnouncementResponseMessage.d.ts +22 -0
- package/dist/models/ScheduleAnAnnouncementResponseMessage.js +47 -0
- package/dist/models/ScheduleAnAnnouncementResponseMessage.js.map +1 -0
- package/dist/models/SendABotMessageRequest.d.ts +27 -0
- package/dist/models/SendABotMessageRequest.js +71 -0
- package/dist/models/SendABotMessageRequest.js.map +1 -0
- package/dist/models/SendAMessageRequest.d.ts +46 -0
- package/dist/models/SendAMessageRequest.js +161 -0
- package/dist/models/SendAMessageRequest.js.map +1 -0
- package/dist/models/SendAdminMessageRequestBody.d.ts +32 -0
- package/dist/models/SendAdminMessageRequestBody.js +83 -0
- package/dist/models/SendAdminMessageRequestBody.js.map +1 -0
- package/dist/models/SendFileMessageRequestBody.d.ts +41 -0
- package/dist/models/SendFileMessageRequestBody.js +137 -0
- package/dist/models/SendFileMessageRequestBody.js.map +1 -0
- package/dist/models/SendTextMessageRequestBody.d.ts +39 -0
- package/dist/models/SendTextMessageRequestBody.js +125 -0
- package/dist/models/SendTextMessageRequestBody.js.map +1 -0
- package/dist/models/SendTextMessageRequestBodyPushMessageTemplate.d.ts +18 -0
- package/dist/models/SendTextMessageRequestBodyPushMessageTemplate.js +23 -0
- package/dist/models/SendTextMessageRequestBodyPushMessageTemplate.js.map +1 -0
- package/dist/models/SendTextMessageRequestBodyPushMessageTemplateOneOf.d.ts +18 -0
- package/dist/models/SendTextMessageRequestBodyPushMessageTemplateOneOf.js +23 -0
- package/dist/models/SendTextMessageRequestBodyPushMessageTemplateOneOf.js.map +1 -0
- package/dist/models/SendbirdBasicUserInfo.d.ts +25 -0
- package/dist/models/SendbirdBasicUserInfo.js +59 -0
- package/dist/models/SendbirdBasicUserInfo.js.map +1 -0
- package/dist/models/SendbirdDisappearingMessage.d.ts +18 -0
- package/dist/models/SendbirdDisappearingMessage.js +23 -0
- package/dist/models/SendbirdDisappearingMessage.js.map +1 -0
- package/dist/models/SendbirdExtendedMessagePayload.d.ts +18 -0
- package/dist/models/SendbirdExtendedMessagePayload.js +23 -0
- package/dist/models/SendbirdExtendedMessagePayload.js.map +1 -0
- package/dist/models/SendbirdFile.d.ts +23 -0
- package/dist/models/SendbirdFile.js +47 -0
- package/dist/models/SendbirdFile.js.map +1 -0
- package/dist/models/SendbirdGroupChannel.d.ts +73 -0
- package/dist/models/SendbirdGroupChannel.js +281 -0
- package/dist/models/SendbirdGroupChannel.js.map +1 -0
- package/dist/models/SendbirdGroupChannelDetail.d.ts +60 -0
- package/dist/models/SendbirdGroupChannelDetail.js +209 -0
- package/dist/models/SendbirdGroupChannelDetail.js.map +1 -0
- package/dist/models/SendbirdGroupChannelDetailChannel.d.ts +24 -0
- package/dist/models/SendbirdGroupChannelDetailChannel.js +59 -0
- package/dist/models/SendbirdGroupChannelDetailChannel.js.map +1 -0
- package/dist/models/SendbirdMember.d.ts +41 -0
- package/dist/models/SendbirdMember.js +143 -0
- package/dist/models/SendbirdMember.js.map +1 -0
- package/dist/models/SendbirdMessageResponse.d.ts +53 -0
- package/dist/models/SendbirdMessageResponse.js +191 -0
- package/dist/models/SendbirdMessageResponse.js.map +1 -0
- package/dist/models/SendbirdMessageResponseMessageEvents.d.ts +20 -0
- package/dist/models/SendbirdMessageResponseMessageEvents.js +35 -0
- package/dist/models/SendbirdMessageResponseMessageEvents.js.map +1 -0
- package/dist/models/SendbirdOpenChannel.d.ts +30 -0
- package/dist/models/SendbirdOpenChannel.js +89 -0
- package/dist/models/SendbirdOpenChannel.js.map +1 -0
- package/dist/models/SendbirdParentMessageInfo.d.ts +25 -0
- package/dist/models/SendbirdParentMessageInfo.js +53 -0
- package/dist/models/SendbirdParentMessageInfo.js.map +1 -0
- package/dist/models/SendbirdPushTriggerOption.d.ts +1 -0
- package/dist/models/SendbirdPushTriggerOption.js +2 -0
- package/dist/models/SendbirdPushTriggerOption.js.map +1 -0
- package/dist/models/SendbirdReaction.d.ts +19 -0
- package/dist/models/SendbirdReaction.js +29 -0
- package/dist/models/SendbirdReaction.js.map +1 -0
- package/dist/models/SendbirdSmsFallback.d.ts +18 -0
- package/dist/models/SendbirdSmsFallback.js +23 -0
- package/dist/models/SendbirdSmsFallback.js.map +1 -0
- package/dist/models/SendbirdSortedMetaarrayInner.d.ts +18 -0
- package/dist/models/SendbirdSortedMetaarrayInner.js +23 -0
- package/dist/models/SendbirdSortedMetaarrayInner.js.map +1 -0
- package/dist/models/SendbirdThumbnail.d.ts +22 -0
- package/dist/models/SendbirdThumbnail.js +47 -0
- package/dist/models/SendbirdThumbnail.js.map +1 -0
- package/dist/models/SendbirdUser.d.ts +39 -0
- package/dist/models/SendbirdUser.js +143 -0
- package/dist/models/SendbirdUser.js.map +1 -0
- package/dist/models/StartTypingIndicatorsRequest.d.ts +17 -0
- package/dist/models/StartTypingIndicatorsRequest.js +17 -0
- package/dist/models/StartTypingIndicatorsRequest.js.map +1 -0
- package/dist/models/UpdateAChannelMetadataRequest.d.ts +18 -0
- package/dist/models/UpdateAChannelMetadataRequest.js +23 -0
- package/dist/models/UpdateAChannelMetadataRequest.js.map +1 -0
- package/dist/models/UpdateAGroupChannelRequest.d.ts +27 -0
- package/dist/models/UpdateAGroupChannelRequest.js +71 -0
- package/dist/models/UpdateAGroupChannelRequest.js.map +1 -0
- package/dist/models/UpdateAMessageRequest.d.ts +24 -0
- package/dist/models/UpdateAMessageRequest.js +53 -0
- package/dist/models/UpdateAMessageRequest.js.map +1 -0
- package/dist/models/UpdateAUserRequest.d.ts +26 -0
- package/dist/models/UpdateAUserRequest.js +65 -0
- package/dist/models/UpdateAUserRequest.js.map +1 -0
- package/dist/models/UpdateAnOpenChannelRequest.d.ts +23 -0
- package/dist/models/UpdateAnOpenChannelRequest.js +47 -0
- package/dist/models/UpdateAnOpenChannelRequest.js.map +1 -0
- package/dist/models/UpdateChannelInvitationPreferenceRequest.d.ts +17 -0
- package/dist/models/UpdateChannelInvitationPreferenceRequest.js +17 -0
- package/dist/models/UpdateChannelInvitationPreferenceRequest.js.map +1 -0
- package/dist/models/UpdateChannelInvitationPreferenceResponse.d.ts +17 -0
- package/dist/models/UpdateChannelInvitationPreferenceResponse.js +17 -0
- package/dist/models/UpdateChannelInvitationPreferenceResponse.js.map +1 -0
- package/dist/models/UpdateCountPreferenceOfAChannelRequest.d.ts +18 -0
- package/dist/models/UpdateCountPreferenceOfAChannelRequest.js +17 -0
- package/dist/models/UpdateCountPreferenceOfAChannelRequest.js.map +1 -0
- package/dist/models/UpdateCountPreferenceOfChannelByUrlResponse.d.ts +18 -0
- package/dist/models/UpdateCountPreferenceOfChannelByUrlResponse.js +17 -0
- package/dist/models/UpdateCountPreferenceOfChannelByUrlResponse.js.map +1 -0
- package/dist/models/UpdateExtraDataInAMessageRequest.d.ts +20 -0
- package/dist/models/UpdateExtraDataInAMessageRequest.js +29 -0
- package/dist/models/UpdateExtraDataInAMessageRequest.js.map +1 -0
- package/dist/models/UpdateExtraDataInAMessageResponse.d.ts +18 -0
- package/dist/models/UpdateExtraDataInAMessageResponse.js +17 -0
- package/dist/models/UpdateExtraDataInAMessageResponse.js.map +1 -0
- package/dist/models/UpdatePushPreferencesForAChannelRequest.d.ts +19 -0
- package/dist/models/UpdatePushPreferencesForAChannelRequest.js +23 -0
- package/dist/models/UpdatePushPreferencesForAChannelRequest.js.map +1 -0
- package/dist/models/UpdatePushPreferencesForAChannelResponse.d.ts +20 -0
- package/dist/models/UpdatePushPreferencesForAChannelResponse.js +29 -0
- package/dist/models/UpdatePushPreferencesForAChannelResponse.js.map +1 -0
- package/dist/models/UpdatePushPreferencesRequest.d.ts +31 -0
- package/dist/models/UpdatePushPreferencesRequest.js +95 -0
- package/dist/models/UpdatePushPreferencesRequest.js.map +1 -0
- package/dist/models/UpdatePushPreferencesResponse.d.ts +31 -0
- package/dist/models/UpdatePushPreferencesResponse.js +95 -0
- package/dist/models/UpdatePushPreferencesResponse.js.map +1 -0
- package/dist/models/ViewCountPreferenceOfAChannelResponse.d.ts +18 -0
- package/dist/models/ViewCountPreferenceOfAChannelResponse.js +17 -0
- package/dist/models/ViewCountPreferenceOfAChannelResponse.js.map +1 -0
- package/dist/models/ViewNumberOfChannelsWithUnreadMessagesResponse.d.ts +17 -0
- package/dist/models/ViewNumberOfChannelsWithUnreadMessagesResponse.js +17 -0
- package/dist/models/ViewNumberOfChannelsWithUnreadMessagesResponse.js.map +1 -0
- package/dist/models/ViewNumberOfDailyActiveUsersResponse.d.ts +17 -0
- package/dist/models/ViewNumberOfDailyActiveUsersResponse.js +17 -0
- package/dist/models/ViewNumberOfDailyActiveUsersResponse.js.map +1 -0
- package/dist/models/ViewNumberOfMonthlyActiveUsersResponse.d.ts +17 -0
- package/dist/models/ViewNumberOfMonthlyActiveUsersResponse.js +17 -0
- package/dist/models/ViewNumberOfMonthlyActiveUsersResponse.js.map +1 -0
- package/dist/models/ViewNumberOfUnreadMessagesResponse.d.ts +17 -0
- package/dist/models/ViewNumberOfUnreadMessagesResponse.js +17 -0
- package/dist/models/ViewNumberOfUnreadMessagesResponse.js.map +1 -0
- package/dist/models/ViewPushPreferencesForAChannelResponse.d.ts +20 -0
- package/dist/models/ViewPushPreferencesForAChannelResponse.js +29 -0
- package/dist/models/ViewPushPreferencesForAChannelResponse.js.map +1 -0
- package/dist/models/ViewPushPreferencesResponse.d.ts +31 -0
- package/dist/models/ViewPushPreferencesResponse.js +95 -0
- package/dist/models/ViewPushPreferencesResponse.js.map +1 -0
- package/dist/models/ViewWhoOwnsARegistrationOrDeviceTokenResponseInner.d.ts +17 -0
- package/dist/models/ViewWhoOwnsARegistrationOrDeviceTokenResponseInner.js +17 -0
- package/dist/models/ViewWhoOwnsARegistrationOrDeviceTokenResponseInner.js.map +1 -0
- package/dist/models/all.d.ts +119 -0
- package/dist/models/all.js +120 -0
- package/dist/models/all.js.map +1 -0
- package/dist/rxjsStub.d.ts +10 -0
- package/dist/rxjsStub.js +24 -0
- package/dist/rxjsStub.js.map +1 -0
- package/dist/servers.d.ts +21 -0
- package/dist/servers.js +27 -0
- package/dist/servers.js.map +1 -0
- package/dist/tests/integration/bot.test.d.ts +1 -0
- package/dist/tests/integration/bot.test.js +153 -0
- package/dist/tests/integration/bot.test.js.map +1 -0
- package/dist/tests/integration/constants.d.ts +5 -0
- package/dist/tests/integration/constants.js +9 -0
- package/dist/tests/integration/constants.js.map +1 -0
- package/dist/tests/integration/groupChannel.test.d.ts +1 -0
- package/dist/tests/integration/groupChannel.test.js +1238 -0
- package/dist/tests/integration/groupChannel.test.js.map +1 -0
- package/dist/tests/integration/helper.d.ts +1 -0
- package/dist/tests/integration/helper.js +4 -0
- package/dist/tests/integration/helper.js.map +1 -0
- package/dist/tests/integration/metadata.test.d.ts +1 -0
- package/dist/tests/integration/metadata.test.js +17 -0
- package/dist/tests/integration/metadata.test.js.map +1 -0
- package/dist/tests/integration/moderation.test.d.ts +1 -0
- package/dist/tests/integration/moderation.test.js +142 -0
- package/dist/tests/integration/moderation.test.js.map +1 -0
- package/dist/tests/integration/openChannel.test.d.ts +1 -0
- package/dist/tests/integration/openChannel.test.js +194 -0
- package/dist/tests/integration/openChannel.test.js.map +1 -0
- package/dist/tests/integration/statistics.test.d.ts +1 -0
- package/dist/tests/integration/statistics.test.js +43 -0
- package/dist/tests/integration/statistics.test.js.map +1 -0
- package/dist/tests/integration/user.test.d.ts +1 -0
- package/dist/tests/integration/user.test.js +444 -0
- package/dist/tests/integration/user.test.js.map +1 -0
- package/dist/types/ObjectParamAPI.d.ts +772 -0
- package/dist/types/ObjectParamAPI.js +304 -0
- package/dist/types/ObjectParamAPI.js.map +1 -0
- package/dist/types/ObservableAPI.d.ts +228 -0
- package/dist/types/ObservableAPI.js +1320 -0
- package/dist/types/ObservableAPI.js.map +1 -0
- package/dist/types/PromiseAPI.d.ts +209 -0
- package/dist/types/PromiseAPI.js +387 -0
- package/dist/types/PromiseAPI.js.map +1 -0
- package/dist/util.d.ts +2 -0
- package/dist/util.js +24 -0
- package/dist/util.js.map +1 -0
- package/git_push.sh +51 -0
- package/http/http.ts +231 -0
- package/http/isomorphic-fetch.ts +32 -0
- package/index.ts +12 -0
- package/jest.config.ts +11 -0
- package/jest.setup.ts +5 -0
- package/middleware.ts +66 -0
- package/models/AcceptAnInvitationRequest.ts +42 -0
- package/models/AddARegistrationOrDeviceTokenRequest.ts +49 -0
- package/models/AddARegistrationOrDeviceTokenResponse.ts +50 -0
- package/models/AddExtraDataToAMessageRequest.ts +36 -0
- package/models/AddExtraDataToAMessageResponse.ts +36 -0
- package/models/BlockAUserRequest.ts +45 -0
- package/models/BlockAUserResponse.ts +43 -0
- package/models/CheckIfMemberResponse.ts +45 -0
- package/models/ChooseAPushNotificationContentTemplateRequest.ts +41 -0
- package/models/ChooseAPushNotificationContentTemplateResponse.ts +35 -0
- package/models/CreateABotRequest.ts +100 -0
- package/models/CreateABotResponse.ts +86 -0
- package/models/CreateABotResponseBot.ts +91 -0
- package/models/CreateABotResponseBotStyle.ts +57 -0
- package/models/CreateAChannelMetadataRequest.ts +42 -0
- package/models/CreateAChannelMetadataResponse.ts +42 -0
- package/models/CreateAGroupChannelRequest.ts +171 -0
- package/models/CreateAUserRequest.ts +80 -0
- package/models/CreateAnOpenChannelRequest.ts +91 -0
- package/models/CreateUserTokenRequest.ts +35 -0
- package/models/CreateUserTokenResponse.ts +42 -0
- package/models/FreezeAGroupChannelRequest.ts +35 -0
- package/models/FreezeAnOpenChannelRequest.ts +38 -0
- package/models/GetAGroupChannelResponse.ts +365 -0
- package/models/GetAGroupChannelResponseAllOf.ts +36 -0
- package/models/GetChannelInvitationPreferenceResponse.ts +35 -0
- package/models/GetTotalNumberOfMessagesInAChannelResponse.ts +35 -0
- package/models/GroupChannelListMembersResponse.ts +43 -0
- package/models/GroupChatListChannelsResponse.ts +50 -0
- package/models/HideAChannelRequest.ts +68 -0
- package/models/InviteAsMembersRequest.ts +62 -0
- package/models/InviteAsMembersResponse.ts +365 -0
- package/models/InviteAsMembersResponseAllOf.ts +36 -0
- package/models/JoinAChannelRequest.ts +48 -0
- package/models/JoinChannelsRequest.ts +35 -0
- package/models/LeaveAChannelRequest.ts +71 -0
- package/models/LeaveMyGroupChannelsRequest.ts +35 -0
- package/models/ListBlockedUsersResponse.ts +43 -0
- package/models/ListBotsResponse.ts +43 -0
- package/models/ListBotsResponseBotsInner.ts +110 -0
- package/models/ListBotsResponseBotsInnerAi.ts +112 -0
- package/models/ListBotsResponseBotsInnerBot.ts +84 -0
- package/models/ListBotsResponseBotsInnerBotStyle.ts +57 -0
- package/models/ListBotsResponseBotsInnerBotStyleColor.ts +49 -0
- package/models/ListBotsResponseBotsInnerFirstMessagesInner.ts +43 -0
- package/models/ListBotsResponseBotsInnerFirstMessagesInnerData.ts +35 -0
- package/models/ListBotsResponseBotsInnerSafeguard.ts +56 -0
- package/models/ListMessagesResponse.ts +36 -0
- package/models/ListMyGroupChannelsResponse.ts +50 -0
- package/models/ListOpenChannelsResponse.ts +50 -0
- package/models/ListOperatorsResponse.ts +43 -0
- package/models/ListRegistrationOrDeviceTokensResponse.ts +57 -0
- package/models/ListUsersResponse.ts +43 -0
- package/models/MarkAllMessagesAsReadRequest.ts +38 -0
- package/models/MarkChannelMessagesAsReadRequest.ts +35 -0
- package/models/MigrateMessagesAdminMessageRequest.ts +94 -0
- package/models/MigrateMessagesFileMessageRequest.ts +130 -0
- package/models/MigrateMessagesFileMessageRequestThumbnailsInner.ts +29 -0
- package/models/MigrateMessagesRequest.ts +50 -0
- package/models/MigrateMessagesRequestMessagesInner.ts +154 -0
- package/models/MigrateMessagesTextMessageRequest.ts +94 -0
- package/models/ObjectSerializer.ts +611 -0
- package/models/RegisterOperatorsToAGroupChannelRequest.ts +35 -0
- package/models/RemoveARegistrationOrDeviceTokenResponse.ts +43 -0
- package/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringASpecificTokenResponse.ts +43 -0
- package/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringAllDeviceTokensResponse.ts +43 -0
- package/models/RemoveAllRegistrationOrDeviceTokenResponse.ts +43 -0
- package/models/ResetChatHistoryRequest.ts +42 -0
- package/models/ResetChatHistoryResponse.ts +38 -0
- package/models/ScheduleAnAnnouncementRequest.ts +156 -0
- package/models/ScheduleAnAnnouncementRequestCreateChannelOptions.ts +63 -0
- package/models/ScheduleAnAnnouncementRequestMessage.ts +63 -0
- package/models/ScheduleAnAnnouncementResponse.ts +198 -0
- package/models/ScheduleAnAnnouncementResponseMessage.ts +70 -0
- package/models/SendABotMessageRequest.ts +99 -0
- package/models/SendAMessageRequest.ts +219 -0
- package/models/SendAdminMessageRequestBody.ts +121 -0
- package/models/SendBirdFile.ts +71 -0
- package/models/SendBirdGroupChannel.ts +355 -0
- package/models/SendBirdMember.ts +187 -0
- package/models/SendBirdMessageResponse.ts +245 -0
- package/models/SendBirdParentMessageInfo.ts +79 -0
- package/models/SendBirdUser.ts +188 -0
- package/models/SendFileMessageRequestBody.ts +187 -0
- package/models/SendTextMessageRequestBody.ts +170 -0
- package/models/SendTextMessageRequestBodyPushMessageTemplate.ts +52 -0
- package/models/SendTextMessageRequestBodyPushMessageTemplateOneOf.ts +48 -0
- package/models/SendbirdBasicUserInfo.ts +87 -0
- package/models/SendbirdDisappearingMessage.ts +42 -0
- package/models/SendbirdExtendedMessagePayload.ts +51 -0
- package/models/SendbirdGroupChannelDetail.ts +266 -0
- package/models/SendbirdGroupChannelDetailChannel.ts +84 -0
- package/models/SendbirdMessageResponseMessageEvents.ts +56 -0
- package/models/SendbirdOpenChannel.ts +120 -0
- package/models/SendbirdPushTriggerOption.ts +15 -0
- package/models/SendbirdReaction.ts +49 -0
- package/models/SendbirdSmsFallback.ts +42 -0
- package/models/SendbirdSortedMetaarrayInner.ts +42 -0
- package/models/SendbirdThumbnail.ts +70 -0
- package/models/StartTypingIndicatorsRequest.ts +35 -0
- package/models/UpdateAChannelMetadataRequest.ts +42 -0
- package/models/UpdateAGroupChannelRequest.ts +98 -0
- package/models/UpdateAMessageRequest.ts +80 -0
- package/models/UpdateAUserRequest.ts +91 -0
- package/models/UpdateAnOpenChannelRequest.ts +70 -0
- package/models/UpdateChannelInvitationPreferenceRequest.ts +35 -0
- package/models/UpdateChannelInvitationPreferenceResponse.ts +35 -0
- package/models/UpdateCountPreferenceOfAChannelRequest.ts +38 -0
- package/models/UpdateCountPreferenceOfChannelByUrlResponse.ts +38 -0
- package/models/UpdateExtraDataInAMessageRequest.ts +50 -0
- package/models/UpdateExtraDataInAMessageResponse.ts +36 -0
- package/models/UpdatePushPreferencesForAChannelRequest.ts +48 -0
- package/models/UpdatePushPreferencesForAChannelResponse.ts +50 -0
- package/models/UpdatePushPreferencesRequest.ts +127 -0
- package/models/UpdatePushPreferencesResponse.ts +127 -0
- package/models/ViewCountPreferenceOfAChannelResponse.ts +38 -0
- package/models/ViewNumberOfChannelsWithUnreadMessagesResponse.ts +35 -0
- package/models/ViewNumberOfDailyActiveUsersResponse.ts +35 -0
- package/models/ViewNumberOfMonthlyActiveUsersResponse.ts +35 -0
- package/models/ViewNumberOfUnreadMessagesResponse.ts +35 -0
- package/models/ViewPushPreferencesForAChannelResponse.ts +50 -0
- package/models/ViewPushPreferencesResponse.ts +127 -0
- package/models/ViewWhoOwnsARegistrationOrDeviceTokenResponseInner.ts +35 -0
- package/models/all.ts +119 -0
- package/package.json +50 -0
- package/rxjsStub.ts +27 -0
- package/servers.ts +53 -0
- package/tests/integration/bot.test.ts +186 -0
- package/tests/integration/constants.ts +10 -0
- package/tests/integration/groupChannel.test.ts +1624 -0
- package/tests/integration/helper.ts +8 -0
- package/tests/integration/metadata.test.ts +22 -0
- package/tests/integration/moderation.test.ts +172 -0
- package/tests/integration/openChannel.test.ts +239 -0
- package/tests/integration/statistics.test.ts +44 -0
- package/tests/integration/user.test.ts +585 -0
- package/tsconfig.json +29 -0
- package/types/ObjectParamAPI.ts +3609 -0
- package/types/ObservableAPI.ts +2592 -0
- package/types/PromiseAPI.ts +1438 -0
- package/util.ts +37 -0
|
@@ -0,0 +1,1624 @@
|
|
|
1
|
+
import { ListOperatorsResponse } from "./../../models/ListOperatorsResponse";
|
|
2
|
+
import {
|
|
3
|
+
CreateAGroupChannelRequest,
|
|
4
|
+
SendbirdBasicUserInfo,
|
|
5
|
+
SendbirdDisappearingMessage,
|
|
6
|
+
SendbirdGroupChannelCountPreferenceEnum,
|
|
7
|
+
SendbirdGroupChannelHiddenStateEnum,
|
|
8
|
+
SendbirdGroupChannelMemberStateEnum,
|
|
9
|
+
SendbirdGroupChannelMyRoleEnum,
|
|
10
|
+
SendbirdMessageResponse,
|
|
11
|
+
SendbirdSmsFallback,
|
|
12
|
+
SendbirdUser,
|
|
13
|
+
SendbirdMemberRoleEnum,
|
|
14
|
+
SendbirdMemberStateEnum,
|
|
15
|
+
SendbirdGroupChannelDetailChannel,
|
|
16
|
+
} from "../../models/ObjectSerializer";
|
|
17
|
+
import { hasValidField } from "./helper";
|
|
18
|
+
import { ServerConfiguration } from "../../servers";
|
|
19
|
+
import { createConfiguration } from "../../configuration";
|
|
20
|
+
import { GroupChannelApi } from "../../index";
|
|
21
|
+
import {
|
|
22
|
+
GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
|
|
23
|
+
MASTER_USER_ID,
|
|
24
|
+
SECOND_USER_ID,
|
|
25
|
+
USERS,
|
|
26
|
+
} from "./constants";
|
|
27
|
+
|
|
28
|
+
describe("Group Channel API", () => {
|
|
29
|
+
const APP_ID = process.env.APP_ID || "";
|
|
30
|
+
const API_TOKEN = process.env.API_TOKEN || "";
|
|
31
|
+
let groupChannelApi: GroupChannelApi;
|
|
32
|
+
const validSendbirdGroupChannelCountPreferenceEnum: (
|
|
33
|
+
| SendbirdGroupChannelCountPreferenceEnum
|
|
34
|
+
| undefined
|
|
35
|
+
)[] = [
|
|
36
|
+
"false",
|
|
37
|
+
"all",
|
|
38
|
+
"unread_message_count_only",
|
|
39
|
+
"unread_mentioned_count_only",
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
const validSendbirdGroupChannelMemberStateEnum: (
|
|
43
|
+
| SendbirdGroupChannelMemberStateEnum
|
|
44
|
+
| undefined
|
|
45
|
+
)[] = ["invited", "joined", "none"];
|
|
46
|
+
|
|
47
|
+
const validSendbirdGroupChannelHiddenStateEnum: (
|
|
48
|
+
| SendbirdGroupChannelHiddenStateEnum
|
|
49
|
+
| undefined
|
|
50
|
+
)[] = ["hidden_allow_auto_unhide", "hidden_prevent_auto_unhide", "unhidden"];
|
|
51
|
+
|
|
52
|
+
const validSendbirdGroupChannelMyRoleEnum: (
|
|
53
|
+
| SendbirdGroupChannelMyRoleEnum
|
|
54
|
+
| undefined
|
|
55
|
+
)[] = ["none", "operator", ""];
|
|
56
|
+
|
|
57
|
+
const validSendbirdMemberRoleEnum: (SendbirdMemberRoleEnum | undefined)[] = [
|
|
58
|
+
"",
|
|
59
|
+
"none",
|
|
60
|
+
"operator",
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
const validSendbirdMemberStateEnum: (SendbirdMemberStateEnum | undefined)[] =
|
|
64
|
+
["", "invited", "joined"];
|
|
65
|
+
|
|
66
|
+
beforeEach(() => {
|
|
67
|
+
const serverConfig = new ServerConfiguration(
|
|
68
|
+
`https://api-${APP_ID}.sendbird.com`,
|
|
69
|
+
{ app_id: APP_ID }
|
|
70
|
+
);
|
|
71
|
+
const configuration = createConfiguration({
|
|
72
|
+
baseServer: serverConfig,
|
|
73
|
+
});
|
|
74
|
+
groupChannelApi = new GroupChannelApi(configuration);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it("call listChannels with positive query params", async () => {
|
|
78
|
+
const CHANNEL_URL =
|
|
79
|
+
"create-group-channel-before-call-list-channels-with-positive-params-test-channel-url";
|
|
80
|
+
// Cleanup first
|
|
81
|
+
try {
|
|
82
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
83
|
+
channelUrl: CHANNEL_URL,
|
|
84
|
+
apiToken: API_TOKEN,
|
|
85
|
+
});
|
|
86
|
+
} catch (e) {
|
|
87
|
+
console.warn("ignore error in cleanup", e);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
91
|
+
|
|
92
|
+
const request: CreateAGroupChannelRequest = {
|
|
93
|
+
accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
|
|
94
|
+
blockSdkUserChannelJoin: true,
|
|
95
|
+
channelUrl: CHANNEL_URL,
|
|
96
|
+
coverUrl: "empty",
|
|
97
|
+
customType: "data",
|
|
98
|
+
data: "data",
|
|
99
|
+
/**
|
|
100
|
+
* Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
|
|
101
|
+
*/
|
|
102
|
+
invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
|
|
103
|
+
inviterId: MASTER_USER_ID,
|
|
104
|
+
isDistinct: false,
|
|
105
|
+
isEphemeral: true,
|
|
106
|
+
isPublic: true,
|
|
107
|
+
isSuper: true,
|
|
108
|
+
name: "test",
|
|
109
|
+
operatorIds: [],
|
|
110
|
+
strict: true,
|
|
111
|
+
users: USERS.map((id) => ({ userId: id })),
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const createGroupChannelresponse =
|
|
115
|
+
await groupChannelApi.createAGroupChannel({
|
|
116
|
+
apiToken: API_TOKEN,
|
|
117
|
+
createAGroupChannelRequest: request,
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
expect(createGroupChannelresponse).toBeDefined();
|
|
121
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
122
|
+
|
|
123
|
+
const response = await groupChannelApi.listChannels({
|
|
124
|
+
apiToken: API_TOKEN,
|
|
125
|
+
limit: 10,
|
|
126
|
+
distinctMode: "all",
|
|
127
|
+
publicMode: "all",
|
|
128
|
+
superMode: "all",
|
|
129
|
+
showEmpty: true,
|
|
130
|
+
showMember: true,
|
|
131
|
+
showDeliveryReceipt: true,
|
|
132
|
+
showReadReceipt: true,
|
|
133
|
+
showMetadata: true,
|
|
134
|
+
showFrozen: true,
|
|
135
|
+
});
|
|
136
|
+
expect(response).toHaveProperty("channels");
|
|
137
|
+
expect(Array.isArray(response.channels)).toBe(true);
|
|
138
|
+
|
|
139
|
+
response.channels?.forEach((channel) => {
|
|
140
|
+
expect(channel).toHaveProperty("channelUrl");
|
|
141
|
+
expect(typeof channel.channelUrl).toBe("string");
|
|
142
|
+
if ("countPreference" in channel) {
|
|
143
|
+
expect(typeof channel.countPreference).toBe("string");
|
|
144
|
+
expect(
|
|
145
|
+
validSendbirdGroupChannelCountPreferenceEnum.includes(
|
|
146
|
+
channel.countPreference
|
|
147
|
+
)
|
|
148
|
+
).toBe(true);
|
|
149
|
+
}
|
|
150
|
+
expect(channel).toHaveProperty("name");
|
|
151
|
+
expect(typeof channel.name).toBe("string");
|
|
152
|
+
expect(channel).toHaveProperty("coverUrl");
|
|
153
|
+
expect(typeof channel.coverUrl).toBe("string");
|
|
154
|
+
|
|
155
|
+
expect(channel).toHaveProperty("createdAt");
|
|
156
|
+
expect(typeof channel.createdAt).toBe("number");
|
|
157
|
+
|
|
158
|
+
if (hasValidField(channel, "createdBy")) {
|
|
159
|
+
expect(channel.createdBy).toBeInstanceOf(SendbirdBasicUserInfo);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
expect(channel).toHaveProperty("customType");
|
|
163
|
+
expect(typeof channel.customType).toBe("string");
|
|
164
|
+
|
|
165
|
+
expect(channel).toHaveProperty("data");
|
|
166
|
+
expect(typeof channel.data).toBe("string");
|
|
167
|
+
|
|
168
|
+
expect(channel).toHaveProperty("deliveryReceipt");
|
|
169
|
+
expect(typeof channel.deliveryReceipt).toBe("object");
|
|
170
|
+
|
|
171
|
+
expect(channel).toHaveProperty("disappearingMessage");
|
|
172
|
+
expect(channel.disappearingMessage).toBeInstanceOf(
|
|
173
|
+
SendbirdDisappearingMessage
|
|
174
|
+
);
|
|
175
|
+
|
|
176
|
+
expect(channel).toHaveProperty("freeze");
|
|
177
|
+
expect(typeof channel.freeze).toBe("boolean");
|
|
178
|
+
|
|
179
|
+
expect(channel).toHaveProperty("hasAiBot");
|
|
180
|
+
expect(typeof channel.hasAiBot).toBe("boolean");
|
|
181
|
+
|
|
182
|
+
expect(channel).toHaveProperty("hasBot");
|
|
183
|
+
expect(typeof channel.hasBot).toBe("boolean");
|
|
184
|
+
|
|
185
|
+
if ("hiddenState" in channel) {
|
|
186
|
+
expect(
|
|
187
|
+
validSendbirdGroupChannelHiddenStateEnum.includes(channel.hiddenState)
|
|
188
|
+
).toBe(true);
|
|
189
|
+
expect(typeof channel.hiddenState).toBe("string");
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
expect(channel).toHaveProperty("ignoreProfanityFilter");
|
|
193
|
+
expect(typeof channel.ignoreProfanityFilter).toBe("boolean");
|
|
194
|
+
|
|
195
|
+
expect(channel).toHaveProperty("invitedAt");
|
|
196
|
+
expect(typeof channel.invitedAt).toBe("number");
|
|
197
|
+
|
|
198
|
+
if (hasValidField(channel, "inviter")) {
|
|
199
|
+
expect(channel.inviter).toBeInstanceOf(SendbirdUser);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
expect(channel).toHaveProperty("isAccessCodeRequired");
|
|
203
|
+
expect(typeof channel.isAccessCodeRequired).toBe("boolean");
|
|
204
|
+
|
|
205
|
+
expect(channel).toHaveProperty("isBroadcast");
|
|
206
|
+
expect(typeof channel.isBroadcast).toBe("boolean");
|
|
207
|
+
|
|
208
|
+
expect(channel).toHaveProperty("isDiscoverable");
|
|
209
|
+
expect(typeof channel.isDiscoverable).toBe("boolean");
|
|
210
|
+
|
|
211
|
+
expect(channel).toHaveProperty("isDistinct");
|
|
212
|
+
expect(typeof channel.isDistinct).toBe("boolean");
|
|
213
|
+
|
|
214
|
+
expect(channel).toHaveProperty("isEphemeral");
|
|
215
|
+
expect(typeof channel.isEphemeral).toBe("boolean");
|
|
216
|
+
|
|
217
|
+
expect(channel).toHaveProperty("isExclusive");
|
|
218
|
+
expect(typeof channel.isExclusive).toBe("boolean");
|
|
219
|
+
|
|
220
|
+
if ("isHidden" in channel) {
|
|
221
|
+
expect(typeof channel.isHidden).toBe("boolean");
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Object(channel).hasProe;
|
|
225
|
+
if ("isMuted" in channel) {
|
|
226
|
+
expect(typeof channel.isMuted).toBe("boolean");
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
if ("isPublic" in channel) {
|
|
230
|
+
expect(typeof channel.isPublic).toBe("boolean");
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
if ("isPushEnabled" in channel) {
|
|
234
|
+
expect(typeof channel.isPushEnabled).toBe("boolean");
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
expect(channel).toHaveProperty("isSuper");
|
|
238
|
+
expect(typeof channel.isSuper).toBe("boolean");
|
|
239
|
+
|
|
240
|
+
expect(channel).toHaveProperty("joinedMemberCount");
|
|
241
|
+
expect(typeof channel.joinedMemberCount).toBe("number");
|
|
242
|
+
|
|
243
|
+
if (hasValidField(channel, "joinedTs")) {
|
|
244
|
+
expect(typeof channel.joinedTs).toBe("number");
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if (hasValidField(channel, "lastMessage")) {
|
|
248
|
+
expect(channel.lastMessage).toBeInstanceOf(SendbirdMessageResponse);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
expect(channel).toHaveProperty("maxLengthMessage");
|
|
252
|
+
expect(typeof channel.maxLengthMessage).toBe("number");
|
|
253
|
+
|
|
254
|
+
expect(channel).toHaveProperty("memberCount");
|
|
255
|
+
expect(typeof channel.memberCount).toBe("number");
|
|
256
|
+
|
|
257
|
+
if (hasValidField(channel, "memberState")) {
|
|
258
|
+
expect(
|
|
259
|
+
validSendbirdGroupChannelMemberStateEnum.includes(channel.memberState)
|
|
260
|
+
).toBe(true);
|
|
261
|
+
expect(typeof channel.memberState).toBe("string");
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
expect(channel).toHaveProperty("members");
|
|
265
|
+
expect(Array.isArray(channel.members)).toBe(true);
|
|
266
|
+
|
|
267
|
+
expect(channel).toHaveProperty("messageSurvivalSeconds");
|
|
268
|
+
expect(typeof channel.messageSurvivalSeconds).toBe("number");
|
|
269
|
+
|
|
270
|
+
expect(channel).toHaveProperty("metadata");
|
|
271
|
+
expect(typeof channel.metadata).toBe("object");
|
|
272
|
+
|
|
273
|
+
if (hasValidField(channel, "myRole")) {
|
|
274
|
+
expect(
|
|
275
|
+
validSendbirdGroupChannelMyRoleEnum.includes(channel.myRole)
|
|
276
|
+
).toBe(true);
|
|
277
|
+
expect(typeof channel.myRole).toBe("string");
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
expect(channel).toHaveProperty("name");
|
|
281
|
+
expect(typeof channel.name).toBe("string");
|
|
282
|
+
|
|
283
|
+
expect(channel).toHaveProperty("readReceipt");
|
|
284
|
+
expect(typeof channel.readReceipt).toBe("object");
|
|
285
|
+
|
|
286
|
+
expect(channel).toHaveProperty("smsFallback");
|
|
287
|
+
expect(channel.smsFallback).toBeInstanceOf(SendbirdSmsFallback);
|
|
288
|
+
|
|
289
|
+
if (hasValidField(channel, "tsMessageOffset")) {
|
|
290
|
+
expect(typeof channel.tsMessageOffset).toBe("number");
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
expect(channel).toHaveProperty("unreadMentionCount");
|
|
294
|
+
expect(typeof channel.unreadMentionCount).toBe("number");
|
|
295
|
+
|
|
296
|
+
expect(channel).toHaveProperty("unreadMessageCount");
|
|
297
|
+
expect(typeof channel.unreadMessageCount).toBe("number");
|
|
298
|
+
|
|
299
|
+
if (hasValidField(channel, "userLastRead")) {
|
|
300
|
+
expect(typeof channel.userLastRead).toBe("number");
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
expect(response).toHaveProperty("next");
|
|
305
|
+
expect(typeof response.next).toBe("string");
|
|
306
|
+
|
|
307
|
+
// Cleanup last
|
|
308
|
+
try {
|
|
309
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
310
|
+
channelUrl: CHANNEL_URL,
|
|
311
|
+
apiToken: API_TOKEN,
|
|
312
|
+
});
|
|
313
|
+
} catch (e) {
|
|
314
|
+
console.warn("ignore error in cleanup", e);
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
it("call listChannels with negative query params", async () => {
|
|
319
|
+
const CHANNEL_URL =
|
|
320
|
+
"create-group-channel-before-call-list-channels-with-negative-params-test-channel-url";
|
|
321
|
+
// Cleanup first
|
|
322
|
+
try {
|
|
323
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
324
|
+
channelUrl: CHANNEL_URL,
|
|
325
|
+
apiToken: API_TOKEN,
|
|
326
|
+
});
|
|
327
|
+
} catch (e) {
|
|
328
|
+
console.warn("ignore error in cleanup", e);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
332
|
+
|
|
333
|
+
const request: CreateAGroupChannelRequest = {
|
|
334
|
+
accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
|
|
335
|
+
blockSdkUserChannelJoin: true,
|
|
336
|
+
channelUrl: CHANNEL_URL,
|
|
337
|
+
coverUrl: "empty",
|
|
338
|
+
customType: "data",
|
|
339
|
+
data: "data",
|
|
340
|
+
/**
|
|
341
|
+
* Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
|
|
342
|
+
*/
|
|
343
|
+
invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
|
|
344
|
+
inviterId: MASTER_USER_ID,
|
|
345
|
+
isDistinct: false,
|
|
346
|
+
isEphemeral: true,
|
|
347
|
+
isPublic: true,
|
|
348
|
+
isSuper: true,
|
|
349
|
+
name: "test",
|
|
350
|
+
operatorIds: [],
|
|
351
|
+
strict: true,
|
|
352
|
+
users: USERS.map((id) => ({ userId: id })),
|
|
353
|
+
};
|
|
354
|
+
|
|
355
|
+
const createGroupChannelresponse =
|
|
356
|
+
await groupChannelApi.createAGroupChannel({
|
|
357
|
+
apiToken: API_TOKEN,
|
|
358
|
+
createAGroupChannelRequest: request,
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
expect(createGroupChannelresponse).toBeDefined();
|
|
362
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
363
|
+
|
|
364
|
+
const response = await groupChannelApi.listChannels({
|
|
365
|
+
apiToken: API_TOKEN,
|
|
366
|
+
limit: 10,
|
|
367
|
+
distinctMode: "all",
|
|
368
|
+
publicMode: "all",
|
|
369
|
+
superMode: "all",
|
|
370
|
+
showEmpty: false,
|
|
371
|
+
showMember: false,
|
|
372
|
+
showDeliveryReceipt: false,
|
|
373
|
+
showReadReceipt: false,
|
|
374
|
+
showMetadata: false,
|
|
375
|
+
showFrozen: false,
|
|
376
|
+
});
|
|
377
|
+
expect(response).toHaveProperty("channels");
|
|
378
|
+
expect(Array.isArray(response.channels)).toBe(true);
|
|
379
|
+
|
|
380
|
+
response.channels?.forEach((channel) => {
|
|
381
|
+
expect(channel).toHaveProperty("channelUrl");
|
|
382
|
+
expect(typeof channel.channelUrl).toBe("string");
|
|
383
|
+
|
|
384
|
+
expect(channel).not.toHaveProperty("deliveryReceipt");
|
|
385
|
+
expect(channel).not.toHaveProperty("members");
|
|
386
|
+
expect(channel).not.toHaveProperty("metadata");
|
|
387
|
+
expect(channel).not.toHaveProperty("readReceipt");
|
|
388
|
+
|
|
389
|
+
expect(channel).toHaveProperty("name");
|
|
390
|
+
expect(typeof channel.name).toBe("string");
|
|
391
|
+
|
|
392
|
+
expect(channel).toHaveProperty("coverUrl");
|
|
393
|
+
expect(typeof channel.coverUrl).toBe("string");
|
|
394
|
+
|
|
395
|
+
expect(channel).toHaveProperty("createdAt");
|
|
396
|
+
expect(typeof channel.createdAt).toBe("number");
|
|
397
|
+
});
|
|
398
|
+
|
|
399
|
+
expect(response).toHaveProperty("next");
|
|
400
|
+
expect(typeof response.next).toBe("string");
|
|
401
|
+
|
|
402
|
+
// Cleanup last
|
|
403
|
+
try {
|
|
404
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
405
|
+
channelUrl: CHANNEL_URL,
|
|
406
|
+
apiToken: API_TOKEN,
|
|
407
|
+
});
|
|
408
|
+
} catch (e) {
|
|
409
|
+
console.warn("ignore error in cleanup", e);
|
|
410
|
+
}
|
|
411
|
+
});
|
|
412
|
+
|
|
413
|
+
it("call createAGroupChannel with Error", async () => {
|
|
414
|
+
const CHANNEL_URL = "create-group-channel-with-error-test-channel-url";
|
|
415
|
+
// Cleanup first
|
|
416
|
+
try {
|
|
417
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
418
|
+
channelUrl: CHANNEL_URL,
|
|
419
|
+
apiToken: API_TOKEN,
|
|
420
|
+
});
|
|
421
|
+
} catch (e) {
|
|
422
|
+
console.warn("ignore error in cleanup", e);
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
426
|
+
const request: CreateAGroupChannelRequest = {
|
|
427
|
+
accessCode: "integration",
|
|
428
|
+
blockSdkUserChannelJoin: true,
|
|
429
|
+
channelUrl: CHANNEL_URL,
|
|
430
|
+
coverUrl: "empty",
|
|
431
|
+
customType: "data",
|
|
432
|
+
data: "data",
|
|
433
|
+
/**
|
|
434
|
+
* Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
|
|
435
|
+
*/
|
|
436
|
+
invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
|
|
437
|
+
inviterId: MASTER_USER_ID,
|
|
438
|
+
isDistinct: true,
|
|
439
|
+
isEphemeral: true,
|
|
440
|
+
isPublic: true,
|
|
441
|
+
isSuper: true,
|
|
442
|
+
name: "test",
|
|
443
|
+
operatorIds: [],
|
|
444
|
+
strict: true,
|
|
445
|
+
users: USERS.map((id) => ({ userId: id })),
|
|
446
|
+
};
|
|
447
|
+
|
|
448
|
+
try {
|
|
449
|
+
await groupChannelApi.createAGroupChannel({
|
|
450
|
+
apiToken: API_TOKEN,
|
|
451
|
+
createAGroupChannelRequest: request,
|
|
452
|
+
});
|
|
453
|
+
} catch (error) {
|
|
454
|
+
expect(JSON.parse((error as any).body).code).toBe(400111);
|
|
455
|
+
}
|
|
456
|
+
});
|
|
457
|
+
|
|
458
|
+
it("call createAGroupChannel and deleteAGroupChannel", async () => {
|
|
459
|
+
const CHANNEL_URL = "create-then-delete-group-channel-test-channel-url";
|
|
460
|
+
// Cleanup first
|
|
461
|
+
try {
|
|
462
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
463
|
+
channelUrl: CHANNEL_URL,
|
|
464
|
+
apiToken: API_TOKEN,
|
|
465
|
+
});
|
|
466
|
+
} catch (e) {
|
|
467
|
+
console.warn("ignore error in cleanup", e);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
471
|
+
|
|
472
|
+
const request: CreateAGroupChannelRequest = {
|
|
473
|
+
accessCode: "integration",
|
|
474
|
+
blockSdkUserChannelJoin: true,
|
|
475
|
+
channelUrl: CHANNEL_URL,
|
|
476
|
+
coverUrl: "empty",
|
|
477
|
+
customType: "data",
|
|
478
|
+
data: "data",
|
|
479
|
+
/**
|
|
480
|
+
* Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
|
|
481
|
+
*/
|
|
482
|
+
invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
|
|
483
|
+
inviterId: MASTER_USER_ID,
|
|
484
|
+
isDistinct: false,
|
|
485
|
+
isEphemeral: true,
|
|
486
|
+
isPublic: true,
|
|
487
|
+
isSuper: true,
|
|
488
|
+
name: "test",
|
|
489
|
+
operatorIds: [],
|
|
490
|
+
strict: true,
|
|
491
|
+
users: USERS.map((id) => ({ userId: id })),
|
|
492
|
+
};
|
|
493
|
+
|
|
494
|
+
const response = await groupChannelApi.createAGroupChannel({
|
|
495
|
+
apiToken: API_TOKEN,
|
|
496
|
+
createAGroupChannelRequest: request,
|
|
497
|
+
});
|
|
498
|
+
|
|
499
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
500
|
+
|
|
501
|
+
expect(response).toHaveProperty("channelUrl");
|
|
502
|
+
expect(response.channelUrl).toBe(CHANNEL_URL);
|
|
503
|
+
expect(typeof response.channelUrl).toBe("string");
|
|
504
|
+
|
|
505
|
+
expect(response).toHaveProperty("coverUrl");
|
|
506
|
+
expect(response.coverUrl).toBe("empty");
|
|
507
|
+
expect(typeof response.coverUrl).toBe("string");
|
|
508
|
+
|
|
509
|
+
expect(response).toHaveProperty("customType");
|
|
510
|
+
expect(response.customType).toBe("data");
|
|
511
|
+
expect(typeof response.customType).toBe("string");
|
|
512
|
+
|
|
513
|
+
// Cleanup last
|
|
514
|
+
try {
|
|
515
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
516
|
+
channelUrl: response.channelUrl,
|
|
517
|
+
apiToken: API_TOKEN,
|
|
518
|
+
});
|
|
519
|
+
} catch (e) {
|
|
520
|
+
console.warn("ignore error in cleanup", e);
|
|
521
|
+
}
|
|
522
|
+
});
|
|
523
|
+
|
|
524
|
+
it("call getAGroupChannel", async () => {
|
|
525
|
+
const CHANNEL_URL = "get-group-channel-test-channel-url";
|
|
526
|
+
// Cleanup first
|
|
527
|
+
try {
|
|
528
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
529
|
+
channelUrl: CHANNEL_URL,
|
|
530
|
+
apiToken: API_TOKEN,
|
|
531
|
+
});
|
|
532
|
+
} catch (e) {
|
|
533
|
+
console.warn("ignore error in cleanup", e);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
537
|
+
|
|
538
|
+
const request: CreateAGroupChannelRequest = {
|
|
539
|
+
accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
|
|
540
|
+
blockSdkUserChannelJoin: true,
|
|
541
|
+
channelUrl: CHANNEL_URL,
|
|
542
|
+
coverUrl: "empty",
|
|
543
|
+
customType: "data",
|
|
544
|
+
data: "data",
|
|
545
|
+
/**
|
|
546
|
+
* Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
|
|
547
|
+
*/
|
|
548
|
+
invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
|
|
549
|
+
inviterId: MASTER_USER_ID,
|
|
550
|
+
isDistinct: false,
|
|
551
|
+
isEphemeral: true,
|
|
552
|
+
isPublic: true,
|
|
553
|
+
isSuper: true,
|
|
554
|
+
name: "test",
|
|
555
|
+
operatorIds: [],
|
|
556
|
+
strict: true,
|
|
557
|
+
users: USERS.map((id) => ({ userId: id })),
|
|
558
|
+
};
|
|
559
|
+
|
|
560
|
+
const createGroupChannelresponse =
|
|
561
|
+
await groupChannelApi.createAGroupChannel({
|
|
562
|
+
apiToken: API_TOKEN,
|
|
563
|
+
createAGroupChannelRequest: request,
|
|
564
|
+
});
|
|
565
|
+
|
|
566
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
567
|
+
|
|
568
|
+
expect(createGroupChannelresponse).toHaveProperty("channelUrl");
|
|
569
|
+
expect(createGroupChannelresponse.channelUrl).toBe(CHANNEL_URL);
|
|
570
|
+
expect(typeof createGroupChannelresponse.channelUrl).toBe("string");
|
|
571
|
+
|
|
572
|
+
const groupChannelResponse = await groupChannelApi.getAGroupChannel({
|
|
573
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
574
|
+
apiToken: API_TOKEN,
|
|
575
|
+
showDeliveryReceipt: true,
|
|
576
|
+
showReadReceipt: true,
|
|
577
|
+
showMember: true,
|
|
578
|
+
memberActiveMode: "all",
|
|
579
|
+
});
|
|
580
|
+
|
|
581
|
+
const channel = groupChannelResponse;
|
|
582
|
+
expect(channel).toHaveProperty("channelUrl");
|
|
583
|
+
expect(channel.channelUrl).toBe(CHANNEL_URL);
|
|
584
|
+
|
|
585
|
+
expect(channel).toHaveProperty("channel");
|
|
586
|
+
expect(channel.channel).toBeInstanceOf(SendbirdGroupChannelDetailChannel);
|
|
587
|
+
|
|
588
|
+
expect(channel.channel).toHaveProperty("channelUrl");
|
|
589
|
+
expect(typeof channel.channel?.channelUrl).toBe("string");
|
|
590
|
+
|
|
591
|
+
expect(channel.channel).toHaveProperty("coverUrl");
|
|
592
|
+
expect(typeof channel.channel?.coverUrl).toBe("string");
|
|
593
|
+
|
|
594
|
+
expect(channel.channel).toHaveProperty("createdAt");
|
|
595
|
+
expect(typeof channel.channel?.createdAt).toBe("number");
|
|
596
|
+
|
|
597
|
+
expect(channel.channel).toHaveProperty("customType");
|
|
598
|
+
expect(typeof channel.channel?.customType).toBe("string");
|
|
599
|
+
|
|
600
|
+
expect(channel.channel).toHaveProperty("data");
|
|
601
|
+
expect(typeof channel.channel?.data).toBe("string");
|
|
602
|
+
|
|
603
|
+
expect(channel.channel).toHaveProperty("maxLengthMessage");
|
|
604
|
+
expect(typeof channel.channel?.maxLengthMessage).toBe("number");
|
|
605
|
+
|
|
606
|
+
expect(channel.channel).toHaveProperty("memberCount");
|
|
607
|
+
expect(typeof channel.channel?.memberCount).toBe("number");
|
|
608
|
+
|
|
609
|
+
expect(channel.channel).toHaveProperty("name");
|
|
610
|
+
expect(typeof channel.channel?.name).toBe("string");
|
|
611
|
+
|
|
612
|
+
expect(channel).toHaveProperty("name");
|
|
613
|
+
expect(typeof channel.name).toBe("string");
|
|
614
|
+
|
|
615
|
+
expect(channel).toHaveProperty("coverUrl");
|
|
616
|
+
expect(typeof channel.coverUrl).toBe("string");
|
|
617
|
+
|
|
618
|
+
expect(channel).toHaveProperty("createdAt");
|
|
619
|
+
expect(typeof channel.createdAt).toBe("number");
|
|
620
|
+
|
|
621
|
+
if (hasValidField(channel, "createdBy")) {
|
|
622
|
+
expect(channel.createdBy).toBeInstanceOf(SendbirdBasicUserInfo);
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
expect(channel).toHaveProperty("customType");
|
|
626
|
+
expect(typeof channel.customType).toBe("string");
|
|
627
|
+
|
|
628
|
+
expect(channel).toHaveProperty("data");
|
|
629
|
+
expect(typeof channel.data).toBe("string");
|
|
630
|
+
|
|
631
|
+
expect(channel).toHaveProperty("deliveryReceipt");
|
|
632
|
+
expect(typeof channel.deliveryReceipt).toBe("object");
|
|
633
|
+
|
|
634
|
+
expect(channel).toHaveProperty("disappearingMessage");
|
|
635
|
+
expect(channel.disappearingMessage).toBeInstanceOf(
|
|
636
|
+
SendbirdDisappearingMessage
|
|
637
|
+
);
|
|
638
|
+
|
|
639
|
+
expect(channel).toHaveProperty("freeze");
|
|
640
|
+
expect(typeof channel.freeze).toBe("boolean");
|
|
641
|
+
|
|
642
|
+
expect(channel).toHaveProperty("hasAiBot");
|
|
643
|
+
expect(typeof channel.hasAiBot).toBe("boolean");
|
|
644
|
+
|
|
645
|
+
expect(channel).toHaveProperty("hasBot");
|
|
646
|
+
expect(typeof channel.hasBot).toBe("boolean");
|
|
647
|
+
|
|
648
|
+
expect(channel).toHaveProperty("ignoreProfanityFilter");
|
|
649
|
+
expect(typeof channel.ignoreProfanityFilter).toBe("boolean");
|
|
650
|
+
|
|
651
|
+
expect(channel).toHaveProperty("isAccessCodeRequired");
|
|
652
|
+
expect(typeof channel.isAccessCodeRequired).toBe("boolean");
|
|
653
|
+
|
|
654
|
+
expect(channel).toHaveProperty("isBroadcast");
|
|
655
|
+
expect(typeof channel.isBroadcast).toBe("boolean");
|
|
656
|
+
|
|
657
|
+
expect(channel).toHaveProperty("isDiscoverable");
|
|
658
|
+
expect(typeof channel.isDiscoverable).toBe("boolean");
|
|
659
|
+
|
|
660
|
+
expect(channel).toHaveProperty("isDistinct");
|
|
661
|
+
expect(typeof channel.isDistinct).toBe("boolean");
|
|
662
|
+
|
|
663
|
+
expect(channel).toHaveProperty("isEphemeral");
|
|
664
|
+
expect(typeof channel.isEphemeral).toBe("boolean");
|
|
665
|
+
|
|
666
|
+
if ("isHidden" in channel) {
|
|
667
|
+
expect(typeof channel.isHidden).toBe("boolean");
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
if ("isMuted" in channel) {
|
|
671
|
+
expect(typeof channel.isMuted).toBe("boolean");
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
if ("isPublic" in channel) {
|
|
675
|
+
expect(typeof channel.isPublic).toBe("boolean");
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
if ("isPushEnabled" in channel) {
|
|
679
|
+
expect(typeof channel.isPushEnabled).toBe("boolean");
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
expect(channel).toHaveProperty("isSuper");
|
|
683
|
+
expect(typeof channel.isSuper).toBe("boolean");
|
|
684
|
+
|
|
685
|
+
expect(channel).toHaveProperty("joinedMemberCount");
|
|
686
|
+
expect(typeof channel.joinedMemberCount).toBe("number");
|
|
687
|
+
|
|
688
|
+
if (hasValidField(channel, "lastMessage")) {
|
|
689
|
+
expect(channel.lastMessage).toBeInstanceOf(SendbirdMessageResponse);
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
expect(channel).toHaveProperty("maxLengthMessage");
|
|
693
|
+
expect(typeof channel.maxLengthMessage).toBe("number");
|
|
694
|
+
|
|
695
|
+
expect(channel).toHaveProperty("memberCount");
|
|
696
|
+
expect(typeof channel.memberCount).toBe("number");
|
|
697
|
+
|
|
698
|
+
expect(channel).toHaveProperty("members");
|
|
699
|
+
expect(Array.isArray(channel.members)).toBe(true);
|
|
700
|
+
|
|
701
|
+
expect(channel).toHaveProperty("messageSurvivalSeconds");
|
|
702
|
+
expect(typeof channel.messageSurvivalSeconds).toBe("number");
|
|
703
|
+
|
|
704
|
+
expect(channel).toHaveProperty("name");
|
|
705
|
+
expect(typeof channel.name).toBe("string");
|
|
706
|
+
|
|
707
|
+
expect(channel).toHaveProperty("readReceipt");
|
|
708
|
+
expect(typeof channel.readReceipt).toBe("object");
|
|
709
|
+
|
|
710
|
+
expect(channel).toHaveProperty("smsFallback");
|
|
711
|
+
expect(channel.smsFallback).toBeInstanceOf(SendbirdSmsFallback);
|
|
712
|
+
|
|
713
|
+
expect(channel).toHaveProperty("unreadMentionCount");
|
|
714
|
+
expect(typeof channel.unreadMentionCount).toBe("number");
|
|
715
|
+
|
|
716
|
+
expect(channel).toHaveProperty("unreadMessageCount");
|
|
717
|
+
expect(typeof channel.unreadMessageCount).toBe("number");
|
|
718
|
+
|
|
719
|
+
// Cleanup last
|
|
720
|
+
try {
|
|
721
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
722
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
723
|
+
apiToken: API_TOKEN,
|
|
724
|
+
});
|
|
725
|
+
} catch (e) {
|
|
726
|
+
console.warn("ignore error in cleanup", e);
|
|
727
|
+
}
|
|
728
|
+
});
|
|
729
|
+
|
|
730
|
+
it("call listMembers", async () => {
|
|
731
|
+
const CHANNEL_URL =
|
|
732
|
+
"create-group-channel-before-call-list-channels-with-then-list-members-test-channel-url";
|
|
733
|
+
// Cleanup first
|
|
734
|
+
try {
|
|
735
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
736
|
+
channelUrl: CHANNEL_URL,
|
|
737
|
+
apiToken: API_TOKEN,
|
|
738
|
+
});
|
|
739
|
+
} catch (e) {
|
|
740
|
+
console.warn("ignore error in cleanup", e);
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
744
|
+
|
|
745
|
+
const request: CreateAGroupChannelRequest = {
|
|
746
|
+
accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
|
|
747
|
+
blockSdkUserChannelJoin: true,
|
|
748
|
+
channelUrl: CHANNEL_URL,
|
|
749
|
+
coverUrl: "empty",
|
|
750
|
+
customType: "data",
|
|
751
|
+
data: "data",
|
|
752
|
+
/**
|
|
753
|
+
* Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
|
|
754
|
+
*/
|
|
755
|
+
invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
|
|
756
|
+
inviterId: MASTER_USER_ID,
|
|
757
|
+
isDistinct: false,
|
|
758
|
+
isEphemeral: true,
|
|
759
|
+
isPublic: true,
|
|
760
|
+
isSuper: true,
|
|
761
|
+
name: "test",
|
|
762
|
+
operatorIds: [],
|
|
763
|
+
strict: true,
|
|
764
|
+
users: USERS.map((id) => ({ userId: id })),
|
|
765
|
+
};
|
|
766
|
+
|
|
767
|
+
const createGroupChannelresponse =
|
|
768
|
+
await groupChannelApi.createAGroupChannel({
|
|
769
|
+
apiToken: API_TOKEN,
|
|
770
|
+
createAGroupChannelRequest: request,
|
|
771
|
+
});
|
|
772
|
+
|
|
773
|
+
expect(createGroupChannelresponse).toBeDefined();
|
|
774
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
775
|
+
|
|
776
|
+
const listResponse = await groupChannelApi.listChannels({
|
|
777
|
+
apiToken: API_TOKEN,
|
|
778
|
+
limit: 1,
|
|
779
|
+
distinctMode: "all",
|
|
780
|
+
publicMode: "all",
|
|
781
|
+
superMode: "all",
|
|
782
|
+
showEmpty: true,
|
|
783
|
+
showMember: true,
|
|
784
|
+
showDeliveryReceipt: true,
|
|
785
|
+
showReadReceipt: true,
|
|
786
|
+
showMetadata: true,
|
|
787
|
+
showFrozen: true,
|
|
788
|
+
});
|
|
789
|
+
expect(listResponse).toHaveProperty("channels");
|
|
790
|
+
expect(Array.isArray(listResponse.channels)).toBe(true);
|
|
791
|
+
expect(listResponse.channels?.length).toBe(1);
|
|
792
|
+
|
|
793
|
+
const channel = listResponse.channels?.[0];
|
|
794
|
+
expect(channel).toBeDefined();
|
|
795
|
+
|
|
796
|
+
if (channel) {
|
|
797
|
+
const listMembersResponse = await groupChannelApi.listMembers({
|
|
798
|
+
apiToken: API_TOKEN,
|
|
799
|
+
channelUrl: channel.channelUrl,
|
|
800
|
+
});
|
|
801
|
+
|
|
802
|
+
expect(listMembersResponse).toHaveProperty("members");
|
|
803
|
+
expect(Array.isArray(listMembersResponse.members)).toBe(true);
|
|
804
|
+
listMembersResponse.members.forEach((member) => {
|
|
805
|
+
expect(member).toHaveProperty("userId");
|
|
806
|
+
expect(typeof member.userId).toBe("string");
|
|
807
|
+
|
|
808
|
+
if (hasValidField(member, "deliveredTs")) {
|
|
809
|
+
expect(typeof member.deliveredTs).toBe("number");
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
if (hasValidField(member, "doNotDisturb")) {
|
|
813
|
+
expect(typeof member.doNotDisturb).toBe("boolean");
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
if (hasValidField(member, "friendDiscoveryKey")) {
|
|
817
|
+
expect(Array.isArray(member.friendDiscoveryKey)).toBe(true);
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
if (hasValidField(member, "friendName")) {
|
|
821
|
+
expect(typeof member.friendName).toBe("string");
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
if (hasValidField(member, "isActive")) {
|
|
825
|
+
expect(typeof member.isActive).toBe("boolean");
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
if (hasValidField(member, "isBlockedByMe")) {
|
|
829
|
+
expect(typeof member.isBlockedByMe).toBe("boolean");
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
if (hasValidField(member, "isBlockingMe")) {
|
|
833
|
+
expect(typeof member.isBlockingMe).toBe("boolean");
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
if (hasValidField(member, "isMuted")) {
|
|
837
|
+
expect(typeof member.isMuted).toBe("boolean");
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
if (hasValidField(member, "isOnline")) {
|
|
841
|
+
expect(typeof member.isOnline).toBe("boolean");
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
if (hasValidField(member, "lastSeenAt")) {
|
|
845
|
+
expect(typeof member.lastSeenAt).toBe("number");
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
if (hasValidField(member, "metadata")) {
|
|
849
|
+
expect(typeof member.metadata).toBe("object");
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
if (hasValidField(member, "mutedDescription")) {
|
|
853
|
+
expect(typeof member.mutedDescription).toBe("string");
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
if (hasValidField(member, "mutedEndAt")) {
|
|
857
|
+
expect(typeof member.mutedEndAt).toBe("number");
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
if (hasValidField(member, "nickname")) {
|
|
861
|
+
expect(typeof member.nickname).toBe("string");
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
if (hasValidField(member, "pushEnabled")) {
|
|
865
|
+
expect(typeof member.pushEnabled).toBe("boolean");
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
if (hasValidField(member, "pushTriggerOption")) {
|
|
869
|
+
expect(typeof member.pushTriggerOption).toBe("string");
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
if (hasValidField(member, "profileUrl")) {
|
|
873
|
+
expect(typeof member.profileUrl).toBe("string");
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
if (hasValidField(member, "requireAuthForProfileImage")) {
|
|
877
|
+
expect(typeof member.requireAuthForProfileImage).toBe("boolean");
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
if (hasValidField(member, "readTs")) {
|
|
881
|
+
expect(typeof member.readTs).toBe("number");
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
if (hasValidField(member, "role")) {
|
|
885
|
+
expect(typeof member.role).toBe("string");
|
|
886
|
+
expect(validSendbirdMemberRoleEnum.includes(member.role)).toBe(true);
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
if (hasValidField(member, "state")) {
|
|
890
|
+
expect(typeof member.state).toBe("string");
|
|
891
|
+
expect(validSendbirdMemberStateEnum.includes(member.state)).toBe(
|
|
892
|
+
true
|
|
893
|
+
);
|
|
894
|
+
}
|
|
895
|
+
});
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
// Cleanup last
|
|
899
|
+
try {
|
|
900
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
901
|
+
channelUrl: CHANNEL_URL,
|
|
902
|
+
apiToken: API_TOKEN,
|
|
903
|
+
});
|
|
904
|
+
} catch (e) {
|
|
905
|
+
console.warn("ignore error in cleanup", e);
|
|
906
|
+
}
|
|
907
|
+
});
|
|
908
|
+
|
|
909
|
+
it("call registerOperatorsToAGroupChannel, listOperators then cancelTheRegistrationOfOperators", async () => {
|
|
910
|
+
const CHANNEL_URL = "list-operator-test-channel-url";
|
|
911
|
+
// Cleanup first
|
|
912
|
+
try {
|
|
913
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
914
|
+
channelUrl: CHANNEL_URL,
|
|
915
|
+
apiToken: API_TOKEN,
|
|
916
|
+
});
|
|
917
|
+
} catch (e) {
|
|
918
|
+
console.warn("ignore error in cleanup", e);
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
922
|
+
|
|
923
|
+
const request: CreateAGroupChannelRequest = {
|
|
924
|
+
accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
|
|
925
|
+
blockSdkUserChannelJoin: true,
|
|
926
|
+
channelUrl: CHANNEL_URL,
|
|
927
|
+
coverUrl: "empty",
|
|
928
|
+
customType: "data",
|
|
929
|
+
data: "data",
|
|
930
|
+
/**
|
|
931
|
+
* Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
|
|
932
|
+
*/
|
|
933
|
+
invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
|
|
934
|
+
inviterId: MASTER_USER_ID,
|
|
935
|
+
isDistinct: false,
|
|
936
|
+
isEphemeral: true,
|
|
937
|
+
isPublic: true,
|
|
938
|
+
isSuper: true,
|
|
939
|
+
name: "test",
|
|
940
|
+
operatorIds: [],
|
|
941
|
+
strict: true,
|
|
942
|
+
users: USERS.map((id) => ({ userId: id })),
|
|
943
|
+
};
|
|
944
|
+
|
|
945
|
+
const createGroupChannelresponse =
|
|
946
|
+
await groupChannelApi.createAGroupChannel({
|
|
947
|
+
apiToken: API_TOKEN,
|
|
948
|
+
createAGroupChannelRequest: request,
|
|
949
|
+
});
|
|
950
|
+
|
|
951
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
952
|
+
|
|
953
|
+
expect(createGroupChannelresponse).toHaveProperty("channelUrl");
|
|
954
|
+
expect(createGroupChannelresponse.channelUrl).toBe(CHANNEL_URL);
|
|
955
|
+
expect(typeof createGroupChannelresponse.channelUrl).toBe("string");
|
|
956
|
+
|
|
957
|
+
expect(createGroupChannelresponse).toHaveProperty("operators");
|
|
958
|
+
expect(createGroupChannelresponse.operators?.length || 0).toBe(0);
|
|
959
|
+
|
|
960
|
+
const registerOperatorResponse =
|
|
961
|
+
await groupChannelApi.registerOperatorsToAGroupChannel({
|
|
962
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
963
|
+
apiToken: API_TOKEN,
|
|
964
|
+
registerOperatorsToAGroupChannelRequest: {
|
|
965
|
+
operatorIds: [MASTER_USER_ID],
|
|
966
|
+
},
|
|
967
|
+
});
|
|
968
|
+
|
|
969
|
+
expect(registerOperatorResponse).toBeDefined();
|
|
970
|
+
|
|
971
|
+
const listOperatorsResponse = await groupChannelApi.listOperators({
|
|
972
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
973
|
+
apiToken: API_TOKEN,
|
|
974
|
+
});
|
|
975
|
+
|
|
976
|
+
expect(listOperatorsResponse).toHaveProperty("operators");
|
|
977
|
+
expect(Object.keys(listOperatorsResponse).length).toBe(2);
|
|
978
|
+
|
|
979
|
+
expect(listOperatorsResponse.operators?.length || 0).toBe(1);
|
|
980
|
+
|
|
981
|
+
listOperatorsResponse.operators?.map((operator) => {
|
|
982
|
+
expect(operator.userId).toEqual(MASTER_USER_ID);
|
|
983
|
+
expect(operator).toHaveProperty("nickname");
|
|
984
|
+
expect(typeof operator.nickname).toBe("string");
|
|
985
|
+
expect(operator).toHaveProperty("profileUrl");
|
|
986
|
+
expect(typeof operator.profileUrl).toBe("string");
|
|
987
|
+
expect(operator).toHaveProperty("metadata");
|
|
988
|
+
expect(typeof operator.metadata).toBe("object");
|
|
989
|
+
expect(operator).toHaveProperty("requireAuthForProfileImage");
|
|
990
|
+
expect(typeof operator.requireAuthForProfileImage).toBe("boolean");
|
|
991
|
+
});
|
|
992
|
+
|
|
993
|
+
const cancelTheRegistrationOfOperatorsResponse =
|
|
994
|
+
await groupChannelApi.cancelTheRegistrationOfOperators({
|
|
995
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
996
|
+
apiToken: API_TOKEN,
|
|
997
|
+
operatorIds: MASTER_USER_ID,
|
|
998
|
+
});
|
|
999
|
+
|
|
1000
|
+
expect(cancelTheRegistrationOfOperatorsResponse).toBeDefined();
|
|
1001
|
+
|
|
1002
|
+
const listOperatorsAfterCancelRegistrationResponse =
|
|
1003
|
+
await groupChannelApi.listOperators({
|
|
1004
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1005
|
+
apiToken: API_TOKEN,
|
|
1006
|
+
});
|
|
1007
|
+
|
|
1008
|
+
expect(listOperatorsAfterCancelRegistrationResponse).toHaveProperty(
|
|
1009
|
+
"operators"
|
|
1010
|
+
);
|
|
1011
|
+
expect(
|
|
1012
|
+
Object.keys(listOperatorsAfterCancelRegistrationResponse).length
|
|
1013
|
+
).toBe(2);
|
|
1014
|
+
|
|
1015
|
+
expect(
|
|
1016
|
+
listOperatorsAfterCancelRegistrationResponse.operators?.length || 0
|
|
1017
|
+
).toBe(0);
|
|
1018
|
+
|
|
1019
|
+
// Cleanup last
|
|
1020
|
+
try {
|
|
1021
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
1022
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1023
|
+
apiToken: API_TOKEN,
|
|
1024
|
+
});
|
|
1025
|
+
} catch (e) {
|
|
1026
|
+
console.warn("ignore error in cleanup", e);
|
|
1027
|
+
}
|
|
1028
|
+
});
|
|
1029
|
+
|
|
1030
|
+
it("call startTypingIndicators and stopTypingIndicators", async () => {
|
|
1031
|
+
const CHANNEL_URL = "group-channel-typing-indicators-test-channel-url";
|
|
1032
|
+
// Cleanup first
|
|
1033
|
+
try {
|
|
1034
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
1035
|
+
channelUrl: CHANNEL_URL,
|
|
1036
|
+
apiToken: API_TOKEN,
|
|
1037
|
+
});
|
|
1038
|
+
} catch (e) {
|
|
1039
|
+
console.warn("ignore error in cleanup", e);
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
1043
|
+
|
|
1044
|
+
const request: CreateAGroupChannelRequest = {
|
|
1045
|
+
accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
|
|
1046
|
+
blockSdkUserChannelJoin: true,
|
|
1047
|
+
channelUrl: CHANNEL_URL,
|
|
1048
|
+
coverUrl: "empty",
|
|
1049
|
+
customType: "data",
|
|
1050
|
+
data: "data",
|
|
1051
|
+
/**
|
|
1052
|
+
* Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
|
|
1053
|
+
*/
|
|
1054
|
+
invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
|
|
1055
|
+
inviterId: MASTER_USER_ID,
|
|
1056
|
+
isDistinct: false,
|
|
1057
|
+
isEphemeral: true,
|
|
1058
|
+
isPublic: true,
|
|
1059
|
+
isSuper: true,
|
|
1060
|
+
name: "test",
|
|
1061
|
+
operatorIds: [],
|
|
1062
|
+
strict: true,
|
|
1063
|
+
users: USERS.map((id) => ({ userId: id })),
|
|
1064
|
+
};
|
|
1065
|
+
|
|
1066
|
+
const createGroupChannelresponse =
|
|
1067
|
+
await groupChannelApi.createAGroupChannel({
|
|
1068
|
+
apiToken: API_TOKEN,
|
|
1069
|
+
createAGroupChannelRequest: request,
|
|
1070
|
+
});
|
|
1071
|
+
|
|
1072
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
1073
|
+
|
|
1074
|
+
expect(createGroupChannelresponse).toHaveProperty("channelUrl");
|
|
1075
|
+
expect(createGroupChannelresponse.channelUrl).toBe(CHANNEL_URL);
|
|
1076
|
+
|
|
1077
|
+
const startTypingResponse = await groupChannelApi.startTypingIndicators({
|
|
1078
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1079
|
+
apiToken: API_TOKEN,
|
|
1080
|
+
startTypingIndicatorsRequest: {
|
|
1081
|
+
userIds: [MASTER_USER_ID],
|
|
1082
|
+
},
|
|
1083
|
+
});
|
|
1084
|
+
|
|
1085
|
+
const stopTypingResponse = await groupChannelApi.startTypingIndicators({
|
|
1086
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1087
|
+
apiToken: API_TOKEN,
|
|
1088
|
+
startTypingIndicatorsRequest: {
|
|
1089
|
+
userIds: [MASTER_USER_ID],
|
|
1090
|
+
},
|
|
1091
|
+
});
|
|
1092
|
+
|
|
1093
|
+
expect(startTypingResponse).toBeDefined();
|
|
1094
|
+
expect(stopTypingResponse).toBeDefined();
|
|
1095
|
+
|
|
1096
|
+
// Cleanup last
|
|
1097
|
+
try {
|
|
1098
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
1099
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1100
|
+
apiToken: API_TOKEN,
|
|
1101
|
+
});
|
|
1102
|
+
} catch (e) {
|
|
1103
|
+
console.warn("ignore error in cleanup", e);
|
|
1104
|
+
}
|
|
1105
|
+
});
|
|
1106
|
+
|
|
1107
|
+
it("call hideAChannel then unhideAChannel", async () => {
|
|
1108
|
+
const CHANNEL_URL = "group-channel-hide-test-channel-url";
|
|
1109
|
+
// Cleanup first
|
|
1110
|
+
try {
|
|
1111
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
1112
|
+
channelUrl: CHANNEL_URL,
|
|
1113
|
+
apiToken: API_TOKEN,
|
|
1114
|
+
});
|
|
1115
|
+
} catch (e) {
|
|
1116
|
+
console.warn("ignore error in cleanup", e);
|
|
1117
|
+
}
|
|
1118
|
+
|
|
1119
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
1120
|
+
|
|
1121
|
+
const request: CreateAGroupChannelRequest = {
|
|
1122
|
+
accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
|
|
1123
|
+
blockSdkUserChannelJoin: true,
|
|
1124
|
+
channelUrl: CHANNEL_URL,
|
|
1125
|
+
coverUrl: "empty",
|
|
1126
|
+
customType: "data",
|
|
1127
|
+
data: "data",
|
|
1128
|
+
/**
|
|
1129
|
+
* Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
|
|
1130
|
+
*/
|
|
1131
|
+
invitationStatus: {
|
|
1132
|
+
MASTER_USER_ID: "joined",
|
|
1133
|
+
},
|
|
1134
|
+
inviterId: MASTER_USER_ID,
|
|
1135
|
+
isDistinct: false,
|
|
1136
|
+
isEphemeral: true,
|
|
1137
|
+
isPublic: true,
|
|
1138
|
+
isSuper: true,
|
|
1139
|
+
name: "test",
|
|
1140
|
+
operatorIds: [],
|
|
1141
|
+
strict: true,
|
|
1142
|
+
users: USERS.map((id) => ({ userId: id })),
|
|
1143
|
+
};
|
|
1144
|
+
|
|
1145
|
+
const createGroupChannelresponse =
|
|
1146
|
+
await groupChannelApi.createAGroupChannel({
|
|
1147
|
+
apiToken: API_TOKEN,
|
|
1148
|
+
createAGroupChannelRequest: request,
|
|
1149
|
+
});
|
|
1150
|
+
|
|
1151
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
1152
|
+
|
|
1153
|
+
expect(createGroupChannelresponse).toHaveProperty("channelUrl");
|
|
1154
|
+
expect(createGroupChannelresponse.channelUrl).toBe(CHANNEL_URL);
|
|
1155
|
+
|
|
1156
|
+
const hideAChannelResponse = await groupChannelApi.hideAChannel({
|
|
1157
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1158
|
+
apiToken: API_TOKEN,
|
|
1159
|
+
hideAChannelRequest: {
|
|
1160
|
+
userId: SECOND_USER_ID,
|
|
1161
|
+
allowAutoUnhide: true,
|
|
1162
|
+
shouldHideAll: false,
|
|
1163
|
+
},
|
|
1164
|
+
});
|
|
1165
|
+
|
|
1166
|
+
const groupChannelAfterHideResponse =
|
|
1167
|
+
await groupChannelApi.getAGroupChannel({
|
|
1168
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1169
|
+
apiToken: API_TOKEN,
|
|
1170
|
+
showDeliveryReceipt: true,
|
|
1171
|
+
showReadReceipt: true,
|
|
1172
|
+
showMember: true,
|
|
1173
|
+
memberActiveMode: "all",
|
|
1174
|
+
userId: SECOND_USER_ID,
|
|
1175
|
+
});
|
|
1176
|
+
|
|
1177
|
+
const unhideAChannelResponse = await groupChannelApi.unhideAChannel({
|
|
1178
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1179
|
+
apiToken: API_TOKEN,
|
|
1180
|
+
shouldUnhideAll: false,
|
|
1181
|
+
userId: SECOND_USER_ID,
|
|
1182
|
+
});
|
|
1183
|
+
|
|
1184
|
+
const groupChannelAfterUnHideResponse =
|
|
1185
|
+
await groupChannelApi.getAGroupChannel({
|
|
1186
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1187
|
+
apiToken: API_TOKEN,
|
|
1188
|
+
showDeliveryReceipt: true,
|
|
1189
|
+
showReadReceipt: true,
|
|
1190
|
+
showMember: true,
|
|
1191
|
+
memberActiveMode: "all",
|
|
1192
|
+
userId: SECOND_USER_ID,
|
|
1193
|
+
});
|
|
1194
|
+
|
|
1195
|
+
expect(groupChannelAfterHideResponse.channelUrl).toBe(CHANNEL_URL);
|
|
1196
|
+
expect(groupChannelAfterHideResponse).toHaveProperty("hiddenState");
|
|
1197
|
+
expect(groupChannelAfterHideResponse.isHidden).toBeTruthy();
|
|
1198
|
+
|
|
1199
|
+
expect(groupChannelAfterHideResponse).toHaveProperty("hiddenState");
|
|
1200
|
+
expect(groupChannelAfterHideResponse.hiddenState).toBe(
|
|
1201
|
+
"hidden_allow_auto_unhide"
|
|
1202
|
+
);
|
|
1203
|
+
expect(
|
|
1204
|
+
validSendbirdGroupChannelHiddenStateEnum.includes(
|
|
1205
|
+
groupChannelAfterHideResponse.hiddenState
|
|
1206
|
+
)
|
|
1207
|
+
).toBeTruthy();
|
|
1208
|
+
|
|
1209
|
+
expect(groupChannelAfterUnHideResponse).toHaveProperty("hiddenState");
|
|
1210
|
+
expect(groupChannelAfterUnHideResponse.isHidden).toBeFalsy();
|
|
1211
|
+
expect(groupChannelAfterUnHideResponse).toHaveProperty("hiddenState");
|
|
1212
|
+
expect(groupChannelAfterUnHideResponse.hiddenState).toBe("unhidden");
|
|
1213
|
+
expect(
|
|
1214
|
+
validSendbirdGroupChannelHiddenStateEnum.includes(
|
|
1215
|
+
groupChannelAfterUnHideResponse.hiddenState
|
|
1216
|
+
)
|
|
1217
|
+
).toBeTruthy();
|
|
1218
|
+
|
|
1219
|
+
expect(hideAChannelResponse).toBeDefined();
|
|
1220
|
+
expect(unhideAChannelResponse).toBeDefined();
|
|
1221
|
+
|
|
1222
|
+
// Cleanup last
|
|
1223
|
+
try {
|
|
1224
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
1225
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1226
|
+
apiToken: API_TOKEN,
|
|
1227
|
+
});
|
|
1228
|
+
} catch (e) {
|
|
1229
|
+
console.warn("ignore error in cleanup", e);
|
|
1230
|
+
}
|
|
1231
|
+
});
|
|
1232
|
+
|
|
1233
|
+
it("call inviteAsMembers then acceptAnInvitation and checkIfMember", async () => {
|
|
1234
|
+
const CHANNEL_URL = "group-channel-member-invitation-test-channel-url";
|
|
1235
|
+
// Cleanup first
|
|
1236
|
+
try {
|
|
1237
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
1238
|
+
channelUrl: CHANNEL_URL,
|
|
1239
|
+
apiToken: API_TOKEN,
|
|
1240
|
+
});
|
|
1241
|
+
} catch (e) {
|
|
1242
|
+
console.warn("ignore error in cleanup", e);
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1245
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
1246
|
+
|
|
1247
|
+
const request: CreateAGroupChannelRequest = {
|
|
1248
|
+
accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
|
|
1249
|
+
blockSdkUserChannelJoin: true,
|
|
1250
|
+
channelUrl: CHANNEL_URL,
|
|
1251
|
+
coverUrl: "empty",
|
|
1252
|
+
customType: "data",
|
|
1253
|
+
data: "data",
|
|
1254
|
+
/**
|
|
1255
|
+
* Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
|
|
1256
|
+
*/
|
|
1257
|
+
invitationStatus: {
|
|
1258
|
+
MASTER_USER_ID: "joined",
|
|
1259
|
+
},
|
|
1260
|
+
inviterId: MASTER_USER_ID,
|
|
1261
|
+
isDistinct: false,
|
|
1262
|
+
isEphemeral: true,
|
|
1263
|
+
isPublic: true,
|
|
1264
|
+
isSuper: true,
|
|
1265
|
+
name: "test",
|
|
1266
|
+
operatorIds: [],
|
|
1267
|
+
strict: true,
|
|
1268
|
+
users: USERS.map((id) => ({ userId: id })),
|
|
1269
|
+
};
|
|
1270
|
+
|
|
1271
|
+
const createGroupChannelresponse =
|
|
1272
|
+
await groupChannelApi.createAGroupChannel({
|
|
1273
|
+
apiToken: API_TOKEN,
|
|
1274
|
+
createAGroupChannelRequest: request,
|
|
1275
|
+
});
|
|
1276
|
+
|
|
1277
|
+
expect(createGroupChannelresponse).toHaveProperty("channelUrl");
|
|
1278
|
+
expect(createGroupChannelresponse.channelUrl).toBe(CHANNEL_URL);
|
|
1279
|
+
|
|
1280
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
1281
|
+
|
|
1282
|
+
const inviteAsMembersResponse = await groupChannelApi.inviteAsMembers({
|
|
1283
|
+
channelUrl: CHANNEL_URL,
|
|
1284
|
+
apiToken: API_TOKEN,
|
|
1285
|
+
inviteAsMembersRequest: {
|
|
1286
|
+
inviterId: MASTER_USER_ID,
|
|
1287
|
+
userIds: [SECOND_USER_ID],
|
|
1288
|
+
},
|
|
1289
|
+
});
|
|
1290
|
+
|
|
1291
|
+
const groupChannelAfterInviteResponse =
|
|
1292
|
+
await groupChannelApi.getAGroupChannel({
|
|
1293
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1294
|
+
apiToken: API_TOKEN,
|
|
1295
|
+
showDeliveryReceipt: true,
|
|
1296
|
+
showReadReceipt: true,
|
|
1297
|
+
showMember: true,
|
|
1298
|
+
memberActiveMode: "all",
|
|
1299
|
+
userId: SECOND_USER_ID,
|
|
1300
|
+
});
|
|
1301
|
+
|
|
1302
|
+
const acceptAnInvitationResponse = await groupChannelApi.acceptAnInvitation(
|
|
1303
|
+
{
|
|
1304
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1305
|
+
apiToken: API_TOKEN,
|
|
1306
|
+
acceptAnInvitationRequest: {
|
|
1307
|
+
userId: SECOND_USER_ID,
|
|
1308
|
+
accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
|
|
1309
|
+
},
|
|
1310
|
+
}
|
|
1311
|
+
);
|
|
1312
|
+
|
|
1313
|
+
const checkIfMemberResponse = await groupChannelApi.checkIfMember({
|
|
1314
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1315
|
+
apiToken: API_TOKEN,
|
|
1316
|
+
userId: SECOND_USER_ID,
|
|
1317
|
+
});
|
|
1318
|
+
|
|
1319
|
+
const groupChannelAfterJoinedResponse =
|
|
1320
|
+
await groupChannelApi.getAGroupChannel({
|
|
1321
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1322
|
+
apiToken: API_TOKEN,
|
|
1323
|
+
showDeliveryReceipt: true,
|
|
1324
|
+
showReadReceipt: true,
|
|
1325
|
+
showMember: true,
|
|
1326
|
+
memberActiveMode: "all",
|
|
1327
|
+
userId: SECOND_USER_ID,
|
|
1328
|
+
});
|
|
1329
|
+
|
|
1330
|
+
expect(inviteAsMembersResponse).toHaveProperty("invitedAt");
|
|
1331
|
+
expect(inviteAsMembersResponse).toHaveProperty("inviter");
|
|
1332
|
+
expect(inviteAsMembersResponse.inviter?.userId).toBe(MASTER_USER_ID);
|
|
1333
|
+
expect(inviteAsMembersResponse.inviter).toBeInstanceOf(
|
|
1334
|
+
SendbirdBasicUserInfo
|
|
1335
|
+
);
|
|
1336
|
+
|
|
1337
|
+
expect(groupChannelAfterInviteResponse).toHaveProperty("memberState");
|
|
1338
|
+
expect(groupChannelAfterInviteResponse.memberState).toBe("invited");
|
|
1339
|
+
expect(groupChannelAfterInviteResponse.memberCount).toBe(2);
|
|
1340
|
+
expect(groupChannelAfterInviteResponse.joinedMemberCount).toBe(1);
|
|
1341
|
+
|
|
1342
|
+
expect(acceptAnInvitationResponse.joinedMemberCount).toBe(2);
|
|
1343
|
+
expect(
|
|
1344
|
+
acceptAnInvitationResponse.members?.find(
|
|
1345
|
+
(member) => (member.state = "joined")
|
|
1346
|
+
)?.userId
|
|
1347
|
+
).toBe(SECOND_USER_ID);
|
|
1348
|
+
|
|
1349
|
+
expect(groupChannelAfterJoinedResponse).toHaveProperty("memberState");
|
|
1350
|
+
expect(groupChannelAfterJoinedResponse).toHaveProperty("joinedTs");
|
|
1351
|
+
expect(groupChannelAfterJoinedResponse.joinedTs?.toString().length).toBe(
|
|
1352
|
+
10
|
|
1353
|
+
);
|
|
1354
|
+
expect(groupChannelAfterJoinedResponse.memberState).toBe("joined");
|
|
1355
|
+
expect(groupChannelAfterJoinedResponse.memberCount).toBe(2);
|
|
1356
|
+
expect(groupChannelAfterJoinedResponse.joinedMemberCount).toBe(2);
|
|
1357
|
+
|
|
1358
|
+
expect(checkIfMemberResponse).toHaveProperty("isMember");
|
|
1359
|
+
expect(checkIfMemberResponse.isMember).toBeTruthy();
|
|
1360
|
+
expect(typeof checkIfMemberResponse.isMember).toBe("boolean");
|
|
1361
|
+
|
|
1362
|
+
expect(checkIfMemberResponse).toHaveProperty("state");
|
|
1363
|
+
expect(checkIfMemberResponse.state).toBeTruthy();
|
|
1364
|
+
expect(typeof checkIfMemberResponse.state).toBe("string");
|
|
1365
|
+
expect(
|
|
1366
|
+
validSendbirdGroupChannelMemberStateEnum.includes(
|
|
1367
|
+
checkIfMemberResponse.state
|
|
1368
|
+
)
|
|
1369
|
+
).toBeTruthy();
|
|
1370
|
+
|
|
1371
|
+
// Cleanup last
|
|
1372
|
+
try {
|
|
1373
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
1374
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1375
|
+
apiToken: API_TOKEN,
|
|
1376
|
+
});
|
|
1377
|
+
} catch (e) {
|
|
1378
|
+
console.warn("ignore error in cleanup", e);
|
|
1379
|
+
}
|
|
1380
|
+
});
|
|
1381
|
+
|
|
1382
|
+
it("call joinAChannel then leaveAChannel", async () => {
|
|
1383
|
+
const CHANNEL_URL = "group-channel-join-leave-channel-test-channel-url";
|
|
1384
|
+
// Cleanup first
|
|
1385
|
+
try {
|
|
1386
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
1387
|
+
channelUrl: CHANNEL_URL,
|
|
1388
|
+
apiToken: API_TOKEN,
|
|
1389
|
+
});
|
|
1390
|
+
} catch (e) {
|
|
1391
|
+
console.warn("ignore error in cleanup", e);
|
|
1392
|
+
}
|
|
1393
|
+
|
|
1394
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
1395
|
+
|
|
1396
|
+
const request: CreateAGroupChannelRequest = {
|
|
1397
|
+
accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
|
|
1398
|
+
blockSdkUserChannelJoin: true,
|
|
1399
|
+
channelUrl: CHANNEL_URL,
|
|
1400
|
+
coverUrl: "empty",
|
|
1401
|
+
customType: "data",
|
|
1402
|
+
data: "data",
|
|
1403
|
+
/**
|
|
1404
|
+
* Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
|
|
1405
|
+
*/
|
|
1406
|
+
invitationStatus: {
|
|
1407
|
+
MASTER_USER_ID: "joined",
|
|
1408
|
+
},
|
|
1409
|
+
inviterId: MASTER_USER_ID,
|
|
1410
|
+
isDistinct: false,
|
|
1411
|
+
isEphemeral: true,
|
|
1412
|
+
isPublic: true,
|
|
1413
|
+
isSuper: true,
|
|
1414
|
+
name: "test",
|
|
1415
|
+
operatorIds: [],
|
|
1416
|
+
strict: true,
|
|
1417
|
+
users: USERS.map((id) => ({ userId: id })),
|
|
1418
|
+
};
|
|
1419
|
+
|
|
1420
|
+
const createGroupChannelresponse =
|
|
1421
|
+
await groupChannelApi.createAGroupChannel({
|
|
1422
|
+
apiToken: API_TOKEN,
|
|
1423
|
+
createAGroupChannelRequest: request,
|
|
1424
|
+
});
|
|
1425
|
+
|
|
1426
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
1427
|
+
|
|
1428
|
+
expect(createGroupChannelresponse).toHaveProperty("channelUrl");
|
|
1429
|
+
expect(createGroupChannelresponse.channelUrl).toBe(CHANNEL_URL);
|
|
1430
|
+
|
|
1431
|
+
const joinAChannelResponse = await groupChannelApi.joinAChannel({
|
|
1432
|
+
channelUrl: CHANNEL_URL,
|
|
1433
|
+
apiToken: API_TOKEN,
|
|
1434
|
+
joinAChannelRequest: {
|
|
1435
|
+
userId: SECOND_USER_ID,
|
|
1436
|
+
accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
|
|
1437
|
+
},
|
|
1438
|
+
});
|
|
1439
|
+
|
|
1440
|
+
const leaveAChannelResponse = await groupChannelApi.leaveAChannel({
|
|
1441
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1442
|
+
apiToken: API_TOKEN,
|
|
1443
|
+
leaveAChannelRequest: {
|
|
1444
|
+
shouldLeaveAll: false,
|
|
1445
|
+
userIds: [SECOND_USER_ID],
|
|
1446
|
+
},
|
|
1447
|
+
});
|
|
1448
|
+
|
|
1449
|
+
const getAGroupChannelResponse = await groupChannelApi.getAGroupChannel({
|
|
1450
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1451
|
+
apiToken: API_TOKEN,
|
|
1452
|
+
showDeliveryReceipt: true,
|
|
1453
|
+
showReadReceipt: true,
|
|
1454
|
+
showMember: true,
|
|
1455
|
+
memberActiveMode: "all",
|
|
1456
|
+
userId: MASTER_USER_ID,
|
|
1457
|
+
});
|
|
1458
|
+
|
|
1459
|
+
expect(joinAChannelResponse.memberCount).toBe(2);
|
|
1460
|
+
expect(joinAChannelResponse.joinedMemberCount).toBe(2);
|
|
1461
|
+
|
|
1462
|
+
expect(leaveAChannelResponse).toBeDefined();
|
|
1463
|
+
|
|
1464
|
+
expect(getAGroupChannelResponse.memberCount).toBe(1);
|
|
1465
|
+
expect(getAGroupChannelResponse.joinedMemberCount).toBe(1);
|
|
1466
|
+
|
|
1467
|
+
// Cleanup last
|
|
1468
|
+
try {
|
|
1469
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
1470
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1471
|
+
apiToken: API_TOKEN,
|
|
1472
|
+
});
|
|
1473
|
+
} catch (e) {
|
|
1474
|
+
console.warn("ignore error in cleanup", e);
|
|
1475
|
+
}
|
|
1476
|
+
});
|
|
1477
|
+
|
|
1478
|
+
it("call updateAGroupChannel", async () => {
|
|
1479
|
+
const CHANNEL_URL = "group-channel-update-channel-test-channel-url";
|
|
1480
|
+
// Cleanup first
|
|
1481
|
+
try {
|
|
1482
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
1483
|
+
channelUrl: CHANNEL_URL,
|
|
1484
|
+
apiToken: API_TOKEN,
|
|
1485
|
+
});
|
|
1486
|
+
} catch (e) {
|
|
1487
|
+
//ignore
|
|
1488
|
+
console.warn("ignore error in cleanup", e);
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1491
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
1492
|
+
|
|
1493
|
+
const request: CreateAGroupChannelRequest = {
|
|
1494
|
+
accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
|
|
1495
|
+
blockSdkUserChannelJoin: true,
|
|
1496
|
+
channelUrl: CHANNEL_URL,
|
|
1497
|
+
coverUrl: "empty",
|
|
1498
|
+
customType: "data",
|
|
1499
|
+
data: "data",
|
|
1500
|
+
/**
|
|
1501
|
+
* Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
|
|
1502
|
+
*/
|
|
1503
|
+
invitationStatus: {
|
|
1504
|
+
MASTER_USER_ID: "joined",
|
|
1505
|
+
},
|
|
1506
|
+
inviterId: MASTER_USER_ID,
|
|
1507
|
+
isDistinct: false,
|
|
1508
|
+
isEphemeral: true,
|
|
1509
|
+
isPublic: true,
|
|
1510
|
+
isSuper: true,
|
|
1511
|
+
name: "test",
|
|
1512
|
+
operatorIds: [],
|
|
1513
|
+
strict: true,
|
|
1514
|
+
users: USERS.map((id) => ({ userId: id })),
|
|
1515
|
+
};
|
|
1516
|
+
|
|
1517
|
+
const createGroupChannelResponse =
|
|
1518
|
+
await groupChannelApi.createAGroupChannel({
|
|
1519
|
+
apiToken: API_TOKEN,
|
|
1520
|
+
createAGroupChannelRequest: request,
|
|
1521
|
+
});
|
|
1522
|
+
|
|
1523
|
+
expect(createGroupChannelResponse).toHaveProperty("channelUrl");
|
|
1524
|
+
expect(createGroupChannelResponse.channelUrl).toBe(CHANNEL_URL);
|
|
1525
|
+
|
|
1526
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
1527
|
+
|
|
1528
|
+
const updateAGroupChannelResponse =
|
|
1529
|
+
await groupChannelApi.updateAGroupChannel({
|
|
1530
|
+
channelUrl: CHANNEL_URL,
|
|
1531
|
+
apiToken: API_TOKEN,
|
|
1532
|
+
updateAGroupChannelRequest: {
|
|
1533
|
+
name: "test2",
|
|
1534
|
+
data: "data2",
|
|
1535
|
+
},
|
|
1536
|
+
});
|
|
1537
|
+
|
|
1538
|
+
expect(updateAGroupChannelResponse.name).toBe("test2");
|
|
1539
|
+
expect(updateAGroupChannelResponse.data).toBe("data2");
|
|
1540
|
+
|
|
1541
|
+
// Cleanup last
|
|
1542
|
+
try {
|
|
1543
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
1544
|
+
channelUrl: CHANNEL_URL,
|
|
1545
|
+
apiToken: API_TOKEN,
|
|
1546
|
+
});
|
|
1547
|
+
} catch (e) {
|
|
1548
|
+
console.warn("ignore error in cleanup", e);
|
|
1549
|
+
}
|
|
1550
|
+
});
|
|
1551
|
+
|
|
1552
|
+
it("call resetChatHistory", async () => {
|
|
1553
|
+
const CHANNEL_URL = "group-channel-reset-chat-history-test-channel-url";
|
|
1554
|
+
// Cleanup first
|
|
1555
|
+
try {
|
|
1556
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
1557
|
+
channelUrl: CHANNEL_URL,
|
|
1558
|
+
apiToken: API_TOKEN,
|
|
1559
|
+
});
|
|
1560
|
+
} catch (e) {
|
|
1561
|
+
//ignore
|
|
1562
|
+
console.warn("ignore error in cleanup", e);
|
|
1563
|
+
}
|
|
1564
|
+
|
|
1565
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
1566
|
+
|
|
1567
|
+
const request: CreateAGroupChannelRequest = {
|
|
1568
|
+
accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
|
|
1569
|
+
blockSdkUserChannelJoin: true,
|
|
1570
|
+
channelUrl: CHANNEL_URL,
|
|
1571
|
+
coverUrl: "empty",
|
|
1572
|
+
customType: "data",
|
|
1573
|
+
data: "data",
|
|
1574
|
+
/**
|
|
1575
|
+
* Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
|
|
1576
|
+
*/
|
|
1577
|
+
invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
|
|
1578
|
+
inviterId: MASTER_USER_ID,
|
|
1579
|
+
isDistinct: false,
|
|
1580
|
+
isEphemeral: true,
|
|
1581
|
+
isPublic: true,
|
|
1582
|
+
isSuper: true,
|
|
1583
|
+
name: "test",
|
|
1584
|
+
operatorIds: [],
|
|
1585
|
+
strict: true,
|
|
1586
|
+
users: USERS.map((id) => ({ userId: id })),
|
|
1587
|
+
};
|
|
1588
|
+
const createGroupChannelresponse =
|
|
1589
|
+
await groupChannelApi.createAGroupChannel({
|
|
1590
|
+
apiToken: API_TOKEN,
|
|
1591
|
+
createAGroupChannelRequest: request,
|
|
1592
|
+
});
|
|
1593
|
+
|
|
1594
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
1595
|
+
|
|
1596
|
+
expect(createGroupChannelresponse).toHaveProperty("channelUrl");
|
|
1597
|
+
expect(createGroupChannelresponse.channelUrl).toBe(CHANNEL_URL);
|
|
1598
|
+
|
|
1599
|
+
const resetChatHistoryresponse = await groupChannelApi.resetChatHistory({
|
|
1600
|
+
apiToken: API_TOKEN,
|
|
1601
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1602
|
+
resetChatHistoryRequest: {
|
|
1603
|
+
userId: MASTER_USER_ID,
|
|
1604
|
+
resetAll: true,
|
|
1605
|
+
},
|
|
1606
|
+
});
|
|
1607
|
+
|
|
1608
|
+
expect(resetChatHistoryresponse).toHaveProperty("tsMessageOffset");
|
|
1609
|
+
expect(typeof resetChatHistoryresponse.tsMessageOffset).toBe("number");
|
|
1610
|
+
expect(resetChatHistoryresponse.tsMessageOffset?.toString().length).toBe(
|
|
1611
|
+
13
|
|
1612
|
+
);
|
|
1613
|
+
|
|
1614
|
+
// Cleanup last
|
|
1615
|
+
try {
|
|
1616
|
+
await groupChannelApi.deleteAGroupChannel({
|
|
1617
|
+
channelUrl: createGroupChannelresponse.channelUrl,
|
|
1618
|
+
apiToken: API_TOKEN,
|
|
1619
|
+
});
|
|
1620
|
+
} catch (e) {
|
|
1621
|
+
console.warn("ignore error in cleanup", e);
|
|
1622
|
+
}
|
|
1623
|
+
});
|
|
1624
|
+
});
|