From 9fbcab9bf1b6d34cb131d6c2a361dc2531e4316b Mon Sep 17 00:00:00 2001 From: suchang Date: Thu, 14 Nov 2024 21:58:42 +0800 Subject: [PATCH 1/3] feat: :sparkles: add parse room dynamic qrcode and join room by this qrcode --- src/mixins/room-invitation-mixin.ts | 3 ++- src/mixins/room-mixin.ts | 2 ++ src/mods/types.ts | 4 ++++ src/schemas/mod.ts | 4 ++++ src/schemas/room-invitation.ts | 5 +++++ src/schemas/room.ts | 6 ++++++ tests/fixtures/puppet-test/puppet-test.ts | 2 ++ tests/fixtures/smoke-testing.ts | 2 ++ 8 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/mixins/room-invitation-mixin.ts b/src/mixins/room-invitation-mixin.ts index f46262f3..e5d84c8f 100644 --- a/src/mixins/room-invitation-mixin.ts +++ b/src/mixins/room-invitation-mixin.ts @@ -3,6 +3,7 @@ import { } from '../config.js' import type { + RoomInvitationAcceptByQRCode, RoomInvitationPayload, } from '../schemas/room-invitation.js' @@ -48,7 +49,7 @@ const roomInvitationMixin = - + abstract roomInvitationAcceptByQRCode (qrcode: string): Promise /** * Issue #155 - https://github.com/wechaty/puppet/issues/155 * diff --git a/src/mixins/room-mixin.ts b/src/mixins/room-mixin.ts index f9bef345..ad1915c2 100644 --- a/src/mixins/room-mixin.ts +++ b/src/mixins/room-mixin.ts @@ -10,6 +10,7 @@ import type { RoomPayloadFilterFunction, RoomQueryFilter, RoomPermission, + RoomParseDynamicQRCode, } from '../schemas/room.js' import type { PuppetSkeleton } from '../puppet/puppet-skeleton.js' @@ -37,6 +38,7 @@ const roomMixin = abstract roomList () : Promise abstract roomQRCode (roomId: string) : Promise + abstract roomParseDynamicQRCode (url: string) : Promise abstract roomQuit (roomId: string) : Promise abstract roomTopic (roomId: string) : Promise abstract roomTopic (roomId: string, topic: string) : Promise diff --git a/src/mods/types.ts b/src/mods/types.ts index 5cba29d5..bef2f7e5 100644 --- a/src/mods/types.ts +++ b/src/mods/types.ts @@ -4,6 +4,8 @@ import { type PuppetEventName, type ChatEventName, type RoomPermission, + type RoomParseDynamicQRCode, + type RoomInvitationAcceptByQRCode, TagEventType, TagGroupEventType, ContactGender, @@ -82,6 +84,8 @@ export { type FriendshipAddOptions, type MessageSendTextOptions, type RoomPermission, + type RoomParseDynamicQRCode, + type RoomInvitationAcceptByQRCode, type ContactIdExternalUserIdPair, type RoomAntiSpamStrategy, type TextContent, diff --git a/src/schemas/mod.ts b/src/schemas/mod.ts index 8eaabed2..6b5e5278 100644 --- a/src/schemas/mod.ts +++ b/src/schemas/mod.ts @@ -85,10 +85,12 @@ import { type RoomMemberPayload, type RoomMemberQueryFilter, type RoomPermission, + type RoomParseDynamicQRCode, RoomMemberJoinSceneType, } from './room.js' import type { RoomInvitationPayload, + RoomInvitationAcceptByQRCode, } from './room-invitation.js' import type { UrlLinkPayload, @@ -226,11 +228,13 @@ export { type PuppetEventName, type PuppetOptions, type RoomInvitationPayload, + type RoomInvitationAcceptByQRCode, type RoomMemberPayload, type RoomMemberQueryFilter, type RoomPayload, type RoomQueryFilter, type RoomPermission, + type RoomParseDynamicQRCode, type SayablePayload, type TapPayload, type TapQueryFilter, diff --git a/src/schemas/room-invitation.ts b/src/schemas/room-invitation.ts index 131d74f1..673ab054 100644 --- a/src/schemas/room-invitation.ts +++ b/src/schemas/room-invitation.ts @@ -9,3 +9,8 @@ export interface RoomInvitationPayload { timestamp : number, // Unix Timestamp, in seconds or milliseconds receiverId : string, // the room invitation should send to which contact. } + +export interface RoomInvitationAcceptByQRCode { + roomId: string, + chatId: string, +} diff --git a/src/schemas/room.ts b/src/schemas/room.ts index 8686a502..de43a9dc 100644 --- a/src/schemas/room.ts +++ b/src/schemas/room.ts @@ -68,6 +68,12 @@ export interface RoomPermission { disableMemberMutualAdd: boolean, // 禁止外部群成员互相添加 } +export interface RoomParseDynamicQRCode { + qrcode: string, // 二维码url + qrcodeImgUrl: string, // 二维码图片url + roomName: string, // 群名称 +} + /** @hidden */ export type RoomPayloadFilterFunction = (payload: RoomPayload) => boolean diff --git a/tests/fixtures/puppet-test/puppet-test.ts b/tests/fixtures/puppet-test/puppet-test.ts index 40ed260c..b49ba4ea 100644 --- a/tests/fixtures/puppet-test/puppet-test.ts +++ b/tests/fixtures/puppet-test/puppet-test.ts @@ -189,6 +189,7 @@ class PuppetTest extends PUPPET.Puppet { * */ override async roomInvitationAccept (_: string): Promise { } + override async roomInvitationAcceptByQRCode (_: string): Promise { return {} as any } override async roomInvitationRawPayload (roomInvitationId: string) : Promise { return { roomInvitationId } as any } override async roomInvitationRawPayloadParser (rawPayload: any) : Promise { return rawPayload } @@ -208,6 +209,7 @@ class PuppetTest extends PUPPET.Puppet { override async roomDel (roomId: string, contactId: string) : Promise { return { contactId, roomId } as any } override async roomQuit (roomId: string) : Promise { return { roomId } as any } override async roomQRCode (roomId: string) : Promise { return { roomId } as any } + override async roomParseDynamicQRCode (url: string) : Promise { return { url } as any } override async roomOwnerTransfer (roomId: string, contactId: string): Promise { return { roomId, contactId } as any } override async roomDismiss (roomId: string): Promise { return { roomId } as any } diff --git a/tests/fixtures/smoke-testing.ts b/tests/fixtures/smoke-testing.ts index df305c94..133a4f29 100644 --- a/tests/fixtures/smoke-testing.ts +++ b/tests/fixtures/smoke-testing.ts @@ -173,6 +173,7 @@ class PuppetTest extends PUPPET.Puppet { * */ override async roomInvitationAccept (roomInvitationId: string): Promise { void roomInvitationId } + override async roomInvitationAcceptByQRCode (qrcode: string): Promise { void qrcode } override async roomInvitationRawPayload (roomInvitationId: string) : Promise { return { roomInvitationId } as any } override async roomInvitationRawPayloadParser (rawPayload: any) : Promise { return rawPayload } @@ -192,6 +193,7 @@ class PuppetTest extends PUPPET.Puppet { override async roomDel (roomId: string, contactId: string) : Promise { return { contactId, roomId } as any } override async roomQuit (roomId: string) : Promise { return { roomId } as any } override async roomQRCode (roomId: string) : Promise { return { roomId } as any } + override async roomParseDynamicQRCode (url: string) : Promise { return { url } as any } override async roomTopic (roomId: string) : Promise override async roomTopic (roomId: string, topic: string) : Promise From 154bc8b0e9898ab9223b79b4c5ddf09d0978f7f7 Mon Sep 17 00:00:00 2001 From: suchang Date: Thu, 14 Nov 2024 21:58:48 +0800 Subject: [PATCH 2/3] 1.0.93 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 735f11ef..520ed963 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@juzi/wechaty-puppet", - "version": "1.0.92", + "version": "1.0.93", "description": "Abstract Puppet for Wechaty", "type": "module", "exports": { From 9b8bf5052bce80a688fbc6aae7ee4f0468fc3ebe Mon Sep 17 00:00:00 2001 From: suchang Date: Fri, 15 Nov 2024 00:32:02 +0800 Subject: [PATCH 3/3] fix: :bug: typo --- tests/fixtures/smoke-testing.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/fixtures/smoke-testing.ts b/tests/fixtures/smoke-testing.ts index 133a4f29..66ae4603 100644 --- a/tests/fixtures/smoke-testing.ts +++ b/tests/fixtures/smoke-testing.ts @@ -173,7 +173,7 @@ class PuppetTest extends PUPPET.Puppet { * */ override async roomInvitationAccept (roomInvitationId: string): Promise { void roomInvitationId } - override async roomInvitationAcceptByQRCode (qrcode: string): Promise { void qrcode } + override async roomInvitationAcceptByQRCode (qrcode: string): Promise { return { qrcode } as any } override async roomInvitationRawPayload (roomInvitationId: string) : Promise { return { roomInvitationId } as any } override async roomInvitationRawPayloadParser (rawPayload: any) : Promise { return rawPayload }