@kangwifi-pro/waliwa 1.0.2 → 1.1.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/dist/community/audio-transcription.d.ts +46 -0
- package/dist/community/audio-transcription.d.ts.map +1 -0
- package/dist/community/audio-transcription.js +108 -0
- package/dist/community/audio-transcription.js.map +1 -0
- package/dist/community/bulk-operations.d.ts +87 -0
- package/dist/community/bulk-operations.d.ts.map +1 -0
- package/dist/community/bulk-operations.js +223 -0
- package/dist/community/bulk-operations.js.map +1 -0
- package/dist/community/community-fixes.d.ts +306 -0
- package/dist/community/community-fixes.d.ts.map +1 -0
- package/dist/community/community-fixes.js +630 -0
- package/dist/community/community-fixes.js.map +1 -0
- package/dist/community/contacts-manager.d.ts +89 -0
- package/dist/community/contacts-manager.d.ts.map +1 -0
- package/dist/community/contacts-manager.js +241 -0
- package/dist/community/contacts-manager.js.map +1 -0
- package/dist/community/disappearing.d.ts +63 -0
- package/dist/community/disappearing.d.ts.map +1 -0
- package/dist/community/disappearing.js +195 -0
- package/dist/community/disappearing.js.map +1 -0
- package/dist/community/index.d.ts +101 -0
- package/dist/community/index.d.ts.map +1 -0
- package/dist/community/index.js +113 -0
- package/dist/community/index.js.map +1 -0
- package/dist/community/live-location.d.ts +85 -0
- package/dist/community/live-location.d.ts.map +1 -0
- package/dist/community/live-location.js +238 -0
- package/dist/community/live-location.js.map +1 -0
- package/dist/community/message-extras.d.ts +110 -0
- package/dist/community/message-extras.d.ts.map +1 -0
- package/dist/community/message-extras.js +472 -0
- package/dist/community/message-extras.js.map +1 -0
- package/dist/community/newsletter-extended.d.ts +142 -0
- package/dist/community/newsletter-extended.d.ts.map +1 -0
- package/dist/community/newsletter-extended.js +543 -0
- package/dist/community/newsletter-extended.js.map +1 -0
- package/dist/community/privacy-manager.d.ts +98 -0
- package/dist/community/privacy-manager.d.ts.map +1 -0
- package/dist/community/privacy-manager.js +273 -0
- package/dist/community/privacy-manager.js.map +1 -0
- package/dist/community/profile-manager.d.ts +94 -0
- package/dist/community/profile-manager.d.ts.map +1 -0
- package/dist/community/profile-manager.js +363 -0
- package/dist/community/profile-manager.js.map +1 -0
- package/dist/community/status-extended.d.ts +119 -0
- package/dist/community/status-extended.d.ts.map +1 -0
- package/dist/community/status-extended.js +444 -0
- package/dist/community/status-extended.js.map +1 -0
- package/dist/community/sticker-manager.d.ts +73 -0
- package/dist/community/sticker-manager.d.ts.map +1 -0
- package/dist/community/sticker-manager.js +251 -0
- package/dist/community/sticker-manager.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -2
- package/dist/index.js.map +1 -1
- package/dist/socket/wa-socket.d.ts +77 -0
- package/dist/socket/wa-socket.d.ts.map +1 -1
- package/dist/socket/wa-socket.js +149 -3
- package/dist/socket/wa-socket.js.map +1 -1
- package/package.json +2 -2
- package/src/community/audio-transcription.ts +121 -0
- package/src/community/bulk-operations.ts +329 -0
- package/src/community/community-fixes.ts +771 -0
- package/src/community/contacts-manager.ts +282 -0
- package/src/community/disappearing.ts +218 -0
- package/src/community/index.ts +169 -0
- package/src/community/live-location.ts +287 -0
- package/src/community/message-extras.ts +523 -0
- package/src/community/newsletter-extended.ts +614 -0
- package/src/community/privacy-manager.ts +310 -0
- package/src/community/profile-manager.ts +402 -0
- package/src/community/status-extended.ts +518 -0
- package/src/community/sticker-manager.ts +305 -0
- package/src/index.ts +67 -2
- package/src/socket/wa-socket.ts +183 -4
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waliwa - Community Module Entry Point
|
|
3
|
+
*
|
|
4
|
+
* Semua fitur yang diminta komunitas Baileys + fix untuk issue-issue.
|
|
5
|
+
*
|
|
6
|
+
* FITUR BARU:
|
|
7
|
+
* - ProfileManager: update PP, about, name; get profile info
|
|
8
|
+
* - PrivacyManager: block/unblock, privacy settings
|
|
9
|
+
* - NewsletterManagerExtended: post, mute, metadata, subscribers, verification
|
|
10
|
+
* - StatusExtended: reply, views tracking, privacy, album
|
|
11
|
+
* - ContactsManager: sync contacts, check registered
|
|
12
|
+
* - BulkOperations: bulk send, broadcast, album send
|
|
13
|
+
* - MessageExtras: edit, star, pin, view-once download, message info
|
|
14
|
+
* - DisappearingManager: timer control per chat
|
|
15
|
+
* - LiveLocationManager: live location sharing
|
|
16
|
+
* - AudioTranscriptionManager: Whisper integration
|
|
17
|
+
* - StickerManager: sticker packs, custom stickers
|
|
18
|
+
*
|
|
19
|
+
* FIXES:
|
|
20
|
+
* - TypingIndicatorTracker: reliable typing indicator
|
|
21
|
+
* - LastSeenTracker: last seen tracking
|
|
22
|
+
* - MessageStatusTracker: real-time status
|
|
23
|
+
* - SelfMessageFilter: skip self messages
|
|
24
|
+
* - ChatStateManager: reliable archive/pin/mute
|
|
25
|
+
* - DeviceInfoTracker: battery, phone info
|
|
26
|
+
* - GroupEventsTracker: group changes detection
|
|
27
|
+
*/
|
|
28
|
+
export { ProfileManager } from './profile-manager.js';
|
|
29
|
+
export type { ProfileInfo, ProfileManagerOptions } from './profile-manager.js';
|
|
30
|
+
export { PrivacyManager } from './privacy-manager.js';
|
|
31
|
+
export type { PrivacyValue, PrivacyCategory, PrivacySettings, PrivacyManagerOptions } from './privacy-manager.js';
|
|
32
|
+
export { NewsletterManager as NewsletterManagerExtended } from './newsletter-extended.js';
|
|
33
|
+
export type { NewsletterMetadata, NewsletterPost, NewsletterManagerOptions as NewsletterExtOptions } from './newsletter-extended.js';
|
|
34
|
+
export { StatusExtended } from './status-extended.js';
|
|
35
|
+
export type { StatusView, StatusInfo, StatusPrivacyValue, StatusPrivacy, StatusExtendedOptions } from './status-extended.js';
|
|
36
|
+
export { ContactsManager } from './contacts-manager.js';
|
|
37
|
+
export type { ContactInfo, ContactsManagerOptions } from './contacts-manager.js';
|
|
38
|
+
export { BulkOperations } from './bulk-operations.js';
|
|
39
|
+
export type { BulkSendItem, BulkSendResult, BulkSendOptions, AlbumItem, BulkOperationsOptions } from './bulk-operations.js';
|
|
40
|
+
export { MessageExtras } from './message-extras.js';
|
|
41
|
+
export type { MessageInfo, MessageExtrasOptions } from './message-extras.js';
|
|
42
|
+
export { DisappearingManager } from './disappearing.js';
|
|
43
|
+
export type { DisappearingTimer, DisappearingManagerOptions } from './disappearing.js';
|
|
44
|
+
export { TIMER_TO_SECONDS, SECONDS_TO_TIMER } from './disappearing.js';
|
|
45
|
+
export { LiveLocationManager } from './live-location.js';
|
|
46
|
+
export type { LiveLocation, LiveLocationManagerOptions } from './live-location.js';
|
|
47
|
+
export { AudioTranscriptionManager, detectLanguageFromText } from './audio-transcription.js';
|
|
48
|
+
export type { TranscriptionResult, TranscriptionProvider } from './audio-transcription.js';
|
|
49
|
+
export { StickerManager } from './sticker-manager.js';
|
|
50
|
+
export type { StickerMetadata, StickerPack, StickerManagerOptions } from './sticker-manager.js';
|
|
51
|
+
export { TypingIndicatorTracker, LastSeenTracker, MessageStatusTracker, SelfMessageFilter, ChatStateManager, DeviceInfoTracker, GroupEventsTracker, parseGroupInviteInfo } from './community-fixes.js';
|
|
52
|
+
export type { ChatState, GroupInviteInfo } from './community-fixes.js';
|
|
53
|
+
import { ProfileManager } from './profile-manager.js';
|
|
54
|
+
import { PrivacyManager } from './privacy-manager.js';
|
|
55
|
+
import { NewsletterManager as NewsletterManagerExtended } from './newsletter-extended.js';
|
|
56
|
+
import { StatusExtended } from './status-extended.js';
|
|
57
|
+
import { ContactsManager } from './contacts-manager.js';
|
|
58
|
+
import { BulkOperations } from './bulk-operations.js';
|
|
59
|
+
import { MessageExtras } from './message-extras.js';
|
|
60
|
+
import { DisappearingManager } from './disappearing.js';
|
|
61
|
+
import { LiveLocationManager } from './live-location.js';
|
|
62
|
+
import { StickerManager } from './sticker-manager.js';
|
|
63
|
+
import { TypingIndicatorTracker, LastSeenTracker, MessageStatusTracker, SelfMessageFilter, ChatStateManager, DeviceInfoTracker, GroupEventsTracker } from './community-fixes.js';
|
|
64
|
+
import type { WALogger } from '../types/index.js';
|
|
65
|
+
export interface CommunityManagers {
|
|
66
|
+
profile: ProfileManager;
|
|
67
|
+
privacy: PrivacyManager;
|
|
68
|
+
newsletter: NewsletterManagerExtended;
|
|
69
|
+
status: StatusExtended;
|
|
70
|
+
contacts: ContactsManager;
|
|
71
|
+
bulk: BulkOperations;
|
|
72
|
+
messageExtras: MessageExtras;
|
|
73
|
+
disappearing: DisappearingManager;
|
|
74
|
+
liveLocation: LiveLocationManager;
|
|
75
|
+
sticker: StickerManager;
|
|
76
|
+
}
|
|
77
|
+
export interface CommunityTrackers {
|
|
78
|
+
typing: TypingIndicatorTracker;
|
|
79
|
+
lastSeen: LastSeenTracker;
|
|
80
|
+
messageStatus: MessageStatusTracker;
|
|
81
|
+
selfFilter: SelfMessageFilter;
|
|
82
|
+
chatState: ChatStateManager;
|
|
83
|
+
deviceInfo: DeviceInfoTracker;
|
|
84
|
+
groupEvents: GroupEventsTracker;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Create semua community managers
|
|
88
|
+
*/
|
|
89
|
+
export declare function createCommunityManagers(opts: {
|
|
90
|
+
send: (data: Uint8Array) => void;
|
|
91
|
+
registerIqHandler: (id: string, handler: (node: any) => void) => void;
|
|
92
|
+
sendMessage: (jid: any, content: any) => Promise<any>;
|
|
93
|
+
uploadMedia: (data: Buffer | Uint8Array, type: string, mimetype: string, fileName?: string) => Promise<any>;
|
|
94
|
+
downloadMedia?: (url: string, mediaKey: Uint8Array, type: string, mimetype: string) => Promise<Buffer>;
|
|
95
|
+
ownJid?: string;
|
|
96
|
+
logger?: WALogger;
|
|
97
|
+
}): {
|
|
98
|
+
managers: CommunityManagers;
|
|
99
|
+
trackers: CommunityTrackers;
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/community/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElH,OAAO,EAAE,iBAAiB,IAAI,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,wBAAwB,IAAI,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErI,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7H,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE5H,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAEnF,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAE3F,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGhG,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,SAAS,EACT,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,IAAI,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,EAAE,yBAAyB,CAAC;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,mBAAmB,CAAC;IAClC,YAAY,EAAE,mBAAmB,CAAC;IAClC,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,QAAQ,EAAE,eAAe,CAAC;IAC1B,aAAa,EAAE,oBAAoB,CAAC;IACpC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACjC,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,CAAC;IACtE,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACtD,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5G,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB,GAAG;IAAE,QAAQ,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,CA+B/D"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Waliwa - Community Module Entry Point
|
|
4
|
+
*
|
|
5
|
+
* Semua fitur yang diminta komunitas Baileys + fix untuk issue-issue.
|
|
6
|
+
*
|
|
7
|
+
* FITUR BARU:
|
|
8
|
+
* - ProfileManager: update PP, about, name; get profile info
|
|
9
|
+
* - PrivacyManager: block/unblock, privacy settings
|
|
10
|
+
* - NewsletterManagerExtended: post, mute, metadata, subscribers, verification
|
|
11
|
+
* - StatusExtended: reply, views tracking, privacy, album
|
|
12
|
+
* - ContactsManager: sync contacts, check registered
|
|
13
|
+
* - BulkOperations: bulk send, broadcast, album send
|
|
14
|
+
* - MessageExtras: edit, star, pin, view-once download, message info
|
|
15
|
+
* - DisappearingManager: timer control per chat
|
|
16
|
+
* - LiveLocationManager: live location sharing
|
|
17
|
+
* - AudioTranscriptionManager: Whisper integration
|
|
18
|
+
* - StickerManager: sticker packs, custom stickers
|
|
19
|
+
*
|
|
20
|
+
* FIXES:
|
|
21
|
+
* - TypingIndicatorTracker: reliable typing indicator
|
|
22
|
+
* - LastSeenTracker: last seen tracking
|
|
23
|
+
* - MessageStatusTracker: real-time status
|
|
24
|
+
* - SelfMessageFilter: skip self messages
|
|
25
|
+
* - ChatStateManager: reliable archive/pin/mute
|
|
26
|
+
* - DeviceInfoTracker: battery, phone info
|
|
27
|
+
* - GroupEventsTracker: group changes detection
|
|
28
|
+
*/
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
exports.parseGroupInviteInfo = exports.GroupEventsTracker = exports.DeviceInfoTracker = exports.ChatStateManager = exports.SelfMessageFilter = exports.MessageStatusTracker = exports.LastSeenTracker = exports.TypingIndicatorTracker = exports.StickerManager = exports.detectLanguageFromText = exports.AudioTranscriptionManager = exports.LiveLocationManager = exports.SECONDS_TO_TIMER = exports.TIMER_TO_SECONDS = exports.DisappearingManager = exports.MessageExtras = exports.BulkOperations = exports.ContactsManager = exports.StatusExtended = exports.NewsletterManagerExtended = exports.PrivacyManager = exports.ProfileManager = void 0;
|
|
31
|
+
exports.createCommunityManagers = createCommunityManagers;
|
|
32
|
+
// Managers (with IQ integration)
|
|
33
|
+
var profile_manager_js_1 = require("./profile-manager.js");
|
|
34
|
+
Object.defineProperty(exports, "ProfileManager", { enumerable: true, get: function () { return profile_manager_js_1.ProfileManager; } });
|
|
35
|
+
var privacy_manager_js_1 = require("./privacy-manager.js");
|
|
36
|
+
Object.defineProperty(exports, "PrivacyManager", { enumerable: true, get: function () { return privacy_manager_js_1.PrivacyManager; } });
|
|
37
|
+
var newsletter_extended_js_1 = require("./newsletter-extended.js");
|
|
38
|
+
Object.defineProperty(exports, "NewsletterManagerExtended", { enumerable: true, get: function () { return newsletter_extended_js_1.NewsletterManager; } });
|
|
39
|
+
var status_extended_js_1 = require("./status-extended.js");
|
|
40
|
+
Object.defineProperty(exports, "StatusExtended", { enumerable: true, get: function () { return status_extended_js_1.StatusExtended; } });
|
|
41
|
+
var contacts_manager_js_1 = require("./contacts-manager.js");
|
|
42
|
+
Object.defineProperty(exports, "ContactsManager", { enumerable: true, get: function () { return contacts_manager_js_1.ContactsManager; } });
|
|
43
|
+
var bulk_operations_js_1 = require("./bulk-operations.js");
|
|
44
|
+
Object.defineProperty(exports, "BulkOperations", { enumerable: true, get: function () { return bulk_operations_js_1.BulkOperations; } });
|
|
45
|
+
var message_extras_js_1 = require("./message-extras.js");
|
|
46
|
+
Object.defineProperty(exports, "MessageExtras", { enumerable: true, get: function () { return message_extras_js_1.MessageExtras; } });
|
|
47
|
+
var disappearing_js_1 = require("./disappearing.js");
|
|
48
|
+
Object.defineProperty(exports, "DisappearingManager", { enumerable: true, get: function () { return disappearing_js_1.DisappearingManager; } });
|
|
49
|
+
var disappearing_js_2 = require("./disappearing.js");
|
|
50
|
+
Object.defineProperty(exports, "TIMER_TO_SECONDS", { enumerable: true, get: function () { return disappearing_js_2.TIMER_TO_SECONDS; } });
|
|
51
|
+
Object.defineProperty(exports, "SECONDS_TO_TIMER", { enumerable: true, get: function () { return disappearing_js_2.SECONDS_TO_TIMER; } });
|
|
52
|
+
var live_location_js_1 = require("./live-location.js");
|
|
53
|
+
Object.defineProperty(exports, "LiveLocationManager", { enumerable: true, get: function () { return live_location_js_1.LiveLocationManager; } });
|
|
54
|
+
var audio_transcription_js_1 = require("./audio-transcription.js");
|
|
55
|
+
Object.defineProperty(exports, "AudioTranscriptionManager", { enumerable: true, get: function () { return audio_transcription_js_1.AudioTranscriptionManager; } });
|
|
56
|
+
Object.defineProperty(exports, "detectLanguageFromText", { enumerable: true, get: function () { return audio_transcription_js_1.detectLanguageFromText; } });
|
|
57
|
+
var sticker_manager_js_1 = require("./sticker-manager.js");
|
|
58
|
+
Object.defineProperty(exports, "StickerManager", { enumerable: true, get: function () { return sticker_manager_js_1.StickerManager; } });
|
|
59
|
+
// Fixes (no IQ needed, pure logic)
|
|
60
|
+
var community_fixes_js_1 = require("./community-fixes.js");
|
|
61
|
+
Object.defineProperty(exports, "TypingIndicatorTracker", { enumerable: true, get: function () { return community_fixes_js_1.TypingIndicatorTracker; } });
|
|
62
|
+
Object.defineProperty(exports, "LastSeenTracker", { enumerable: true, get: function () { return community_fixes_js_1.LastSeenTracker; } });
|
|
63
|
+
Object.defineProperty(exports, "MessageStatusTracker", { enumerable: true, get: function () { return community_fixes_js_1.MessageStatusTracker; } });
|
|
64
|
+
Object.defineProperty(exports, "SelfMessageFilter", { enumerable: true, get: function () { return community_fixes_js_1.SelfMessageFilter; } });
|
|
65
|
+
Object.defineProperty(exports, "ChatStateManager", { enumerable: true, get: function () { return community_fixes_js_1.ChatStateManager; } });
|
|
66
|
+
Object.defineProperty(exports, "DeviceInfoTracker", { enumerable: true, get: function () { return community_fixes_js_1.DeviceInfoTracker; } });
|
|
67
|
+
Object.defineProperty(exports, "GroupEventsTracker", { enumerable: true, get: function () { return community_fixes_js_1.GroupEventsTracker; } });
|
|
68
|
+
Object.defineProperty(exports, "parseGroupInviteInfo", { enumerable: true, get: function () { return community_fixes_js_1.parseGroupInviteInfo; } });
|
|
69
|
+
// ============== Main Community Manager (Aggregator) ==============
|
|
70
|
+
const profile_manager_js_2 = require("./profile-manager.js");
|
|
71
|
+
const privacy_manager_js_2 = require("./privacy-manager.js");
|
|
72
|
+
const newsletter_extended_js_2 = require("./newsletter-extended.js");
|
|
73
|
+
const status_extended_js_2 = require("./status-extended.js");
|
|
74
|
+
const contacts_manager_js_2 = require("./contacts-manager.js");
|
|
75
|
+
const bulk_operations_js_2 = require("./bulk-operations.js");
|
|
76
|
+
const message_extras_js_2 = require("./message-extras.js");
|
|
77
|
+
const disappearing_js_3 = require("./disappearing.js");
|
|
78
|
+
const live_location_js_2 = require("./live-location.js");
|
|
79
|
+
const sticker_manager_js_2 = require("./sticker-manager.js");
|
|
80
|
+
const community_fixes_js_2 = require("./community-fixes.js");
|
|
81
|
+
const logger_js_1 = require("../utils/logger.js");
|
|
82
|
+
/**
|
|
83
|
+
* Create semua community managers
|
|
84
|
+
*/
|
|
85
|
+
function createCommunityManagers(opts) {
|
|
86
|
+
const logger = opts.logger ?? new logger_js_1.SilentLogger();
|
|
87
|
+
const managers = {
|
|
88
|
+
profile: new profile_manager_js_2.ProfileManager({ send: opts.send, registerIqHandler: opts.registerIqHandler, logger }),
|
|
89
|
+
privacy: new privacy_manager_js_2.PrivacyManager({ send: opts.send, registerIqHandler: opts.registerIqHandler, logger }),
|
|
90
|
+
newsletter: new newsletter_extended_js_2.NewsletterManager({ send: opts.send, registerIqHandler: opts.registerIqHandler, logger }),
|
|
91
|
+
status: new status_extended_js_2.StatusExtended({ send: opts.send, registerIqHandler: opts.registerIqHandler, logger }),
|
|
92
|
+
contacts: new contacts_manager_js_2.ContactsManager({ send: opts.send, registerIqHandler: opts.registerIqHandler, logger, ownJid: opts.ownJid }),
|
|
93
|
+
bulk: new bulk_operations_js_2.BulkOperations({ sendMessage: opts.sendMessage, uploadMedia: opts.uploadMedia, logger }),
|
|
94
|
+
messageExtras: new message_extras_js_2.MessageExtras({ send: opts.send, registerIqHandler: opts.registerIqHandler, logger, downloadMedia: opts.downloadMedia }),
|
|
95
|
+
disappearing: new disappearing_js_3.DisappearingManager({ send: opts.send, registerIqHandler: opts.registerIqHandler, logger }),
|
|
96
|
+
liveLocation: new live_location_js_2.LiveLocationManager({ send: opts.send, registerIqHandler: opts.registerIqHandler, logger }),
|
|
97
|
+
sticker: new sticker_manager_js_2.StickerManager({ send: opts.send, uploadMedia: opts.uploadMedia, registerIqHandler: opts.registerIqHandler, logger })
|
|
98
|
+
};
|
|
99
|
+
const trackers = {
|
|
100
|
+
typing: new community_fixes_js_2.TypingIndicatorTracker(logger),
|
|
101
|
+
lastSeen: new community_fixes_js_2.LastSeenTracker(logger),
|
|
102
|
+
messageStatus: new community_fixes_js_2.MessageStatusTracker(logger),
|
|
103
|
+
selfFilter: new community_fixes_js_2.SelfMessageFilter(),
|
|
104
|
+
chatState: new community_fixes_js_2.ChatStateManager(logger),
|
|
105
|
+
deviceInfo: new community_fixes_js_2.DeviceInfoTracker(logger),
|
|
106
|
+
groupEvents: new community_fixes_js_2.GroupEventsTracker(logger)
|
|
107
|
+
};
|
|
108
|
+
if (opts.ownJid) {
|
|
109
|
+
trackers.selfFilter.setOwnJid(opts.ownJid);
|
|
110
|
+
}
|
|
111
|
+
return { managers, trackers };
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/community/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waliwa - Live Location (Community Request)
|
|
3
|
+
*
|
|
4
|
+
* Fitur yang sering diminta komunitas Baileys:
|
|
5
|
+
* - Share live location (real-time)
|
|
6
|
+
* - Stop live location sharing
|
|
7
|
+
* - Get live location dari incoming messages
|
|
8
|
+
* - Update live location coordinates
|
|
9
|
+
* - Set live location expiration
|
|
10
|
+
*
|
|
11
|
+
* Fix Baileys issues:
|
|
12
|
+
* - Live location tidak support
|
|
13
|
+
* - Tidak bisa stop live location
|
|
14
|
+
*/
|
|
15
|
+
import type { JIDLike, WALogger } from '../types/index.js';
|
|
16
|
+
import { BinaryNode } from '../core/binary.js';
|
|
17
|
+
export interface LiveLocation {
|
|
18
|
+
latitude: number;
|
|
19
|
+
longitude: number;
|
|
20
|
+
accuracy: number;
|
|
21
|
+
speed?: number;
|
|
22
|
+
heading?: number;
|
|
23
|
+
altitude?: number;
|
|
24
|
+
expiration: number;
|
|
25
|
+
caption?: string;
|
|
26
|
+
sequenceNumber: number;
|
|
27
|
+
}
|
|
28
|
+
export interface LiveLocationManagerOptions {
|
|
29
|
+
send: (data: Uint8Array) => void;
|
|
30
|
+
registerIqHandler: (id: string, handler: (node: BinaryNode) => void) => void;
|
|
31
|
+
logger?: WALogger;
|
|
32
|
+
}
|
|
33
|
+
export declare class LiveLocationManager {
|
|
34
|
+
private send;
|
|
35
|
+
private registerIqHandler;
|
|
36
|
+
private logger;
|
|
37
|
+
private activeShares;
|
|
38
|
+
private sequenceCounters;
|
|
39
|
+
constructor(opts: LiveLocationManagerOptions);
|
|
40
|
+
/**
|
|
41
|
+
* Start sharing live location
|
|
42
|
+
* Fix Baileys issue: live location tidak support
|
|
43
|
+
*/
|
|
44
|
+
startSharing(jid: JIDLike, location: Omit<LiveLocation, 'sequenceNumber'>, durationMs?: number): Promise<string>;
|
|
45
|
+
/**
|
|
46
|
+
* Update live location coordinates
|
|
47
|
+
*/
|
|
48
|
+
updateLocation(jid: JIDLike, location: Partial<LiveLocation>): Promise<string>;
|
|
49
|
+
/**
|
|
50
|
+
* Stop sharing live location
|
|
51
|
+
* Fix Baileys issue: tidak bisa stop live location
|
|
52
|
+
*/
|
|
53
|
+
stopSharing(jid: JIDLike): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Stop all active live location sharing
|
|
56
|
+
*/
|
|
57
|
+
stopAllSharing(): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Get all active live location sharing
|
|
60
|
+
*/
|
|
61
|
+
getActiveShares(): Array<{
|
|
62
|
+
jid: string;
|
|
63
|
+
location: LiveLocation;
|
|
64
|
+
}>;
|
|
65
|
+
/**
|
|
66
|
+
* Check if currently sharing live location with a chat
|
|
67
|
+
*/
|
|
68
|
+
isSharing(jid: JIDLike): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Get sequence number untuk a chat
|
|
71
|
+
*/
|
|
72
|
+
getSequenceNumber(jid: JIDLike): number;
|
|
73
|
+
/**
|
|
74
|
+
* Send static location message (non-live)
|
|
75
|
+
*/
|
|
76
|
+
sendStaticLocation(jid: JIDLike, latitude: number, longitude: number, options?: {
|
|
77
|
+
name?: string;
|
|
78
|
+
address?: string;
|
|
79
|
+
}): Promise<string>;
|
|
80
|
+
/**
|
|
81
|
+
* Parse incoming live location message
|
|
82
|
+
*/
|
|
83
|
+
parseLiveLocationMessage(message: any): LiveLocation | null;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=live-location.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-location.d.ts","sourceRoot":"","sources":["../../src/community/live-location.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAoB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKjE,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACjC,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,KAAK,IAAI,CAAC;IAC7E,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,iBAAiB,CAA4D;IACrF,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,gBAAgB,CAAkC;gBAE9C,IAAI,EAAE,0BAA0B;IAM5C;;;OAGG;IACG,YAAY,CAChB,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAC9C,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC;IAiDlB;;OAEG;IACG,cAAc,CAClB,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC;IAyClB;;;OAGG;IACG,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC9C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAWrC;;OAEG;IACH,eAAe,IAAI,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;IAQjE;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAIhC;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM;IAIvC;;OAEG;IACG,kBAAkB,CACtB,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KACb,GACL,OAAO,CAAC,MAAM,CAAC;IAyBlB;;OAEG;IACH,wBAAwB,CAAC,OAAO,EAAE,GAAG,GAAG,YAAY,GAAG,IAAI;CAgB5D"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Waliwa - Live Location (Community Request)
|
|
4
|
+
*
|
|
5
|
+
* Fitur yang sering diminta komunitas Baileys:
|
|
6
|
+
* - Share live location (real-time)
|
|
7
|
+
* - Stop live location sharing
|
|
8
|
+
* - Get live location dari incoming messages
|
|
9
|
+
* - Update live location coordinates
|
|
10
|
+
* - Set live location expiration
|
|
11
|
+
*
|
|
12
|
+
* Fix Baileys issues:
|
|
13
|
+
* - Live location tidak support
|
|
14
|
+
* - Tidak bisa stop live location
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.LiveLocationManager = void 0;
|
|
18
|
+
const binary_js_1 = require("../core/binary.js");
|
|
19
|
+
const jid_js_1 = require("../utils/jid.js");
|
|
20
|
+
const message_encoder_js_1 = require("../messages/message-encoder.js");
|
|
21
|
+
const logger_js_1 = require("../utils/logger.js");
|
|
22
|
+
class LiveLocationManager {
|
|
23
|
+
send;
|
|
24
|
+
registerIqHandler;
|
|
25
|
+
logger;
|
|
26
|
+
activeShares = new Map(); // chatJid -> live location
|
|
27
|
+
sequenceCounters = new Map();
|
|
28
|
+
constructor(opts) {
|
|
29
|
+
this.send = opts.send;
|
|
30
|
+
this.registerIqHandler = opts.registerIqHandler;
|
|
31
|
+
this.logger = opts.logger ?? new logger_js_1.SilentLogger();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Start sharing live location
|
|
35
|
+
* Fix Baileys issue: live location tidak support
|
|
36
|
+
*/
|
|
37
|
+
async startSharing(jid, location, durationMs) {
|
|
38
|
+
const jidStr = (0, jid_js_1.jidToString)(jid);
|
|
39
|
+
const seq = (this.sequenceCounters.get(jidStr) ?? 0) + 1;
|
|
40
|
+
this.sequenceCounters.set(jidStr, seq);
|
|
41
|
+
const liveLocation = { ...location, sequenceNumber: seq };
|
|
42
|
+
this.activeShares.set(jidStr, liveLocation);
|
|
43
|
+
const messageId = (0, message_encoder_js_1.generateMessageId)();
|
|
44
|
+
const node = {
|
|
45
|
+
tag: 'message',
|
|
46
|
+
attrs: {
|
|
47
|
+
to: jidStr,
|
|
48
|
+
type: 'location',
|
|
49
|
+
id: messageId
|
|
50
|
+
},
|
|
51
|
+
content: [
|
|
52
|
+
{
|
|
53
|
+
tag: 'live_location_message',
|
|
54
|
+
attrs: {
|
|
55
|
+
degrees_latitude: location.latitude.toString(),
|
|
56
|
+
degrees_longitude: location.longitude.toString(),
|
|
57
|
+
accuracy: location.accuracy.toString(),
|
|
58
|
+
speed: (location.speed ?? 0).toString(),
|
|
59
|
+
heading: (location.heading ?? 0).toString(),
|
|
60
|
+
altitude: (location.altitude ?? 0).toString(),
|
|
61
|
+
expiration: location.expiration.toString(),
|
|
62
|
+
sequence_number: seq.toString(),
|
|
63
|
+
caption: location.caption ?? ''
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
};
|
|
68
|
+
this.send((0, binary_js_1.encodeBinaryNode)(node));
|
|
69
|
+
this.logger.info(`Started live location sharing with ${jidStr} (expiration: ${location.expiration}s)`);
|
|
70
|
+
// Auto-stop after expiration
|
|
71
|
+
if (durationMs && durationMs > 0) {
|
|
72
|
+
const expirationMs = Math.min(durationMs, location.expiration * 1000);
|
|
73
|
+
setTimeout(() => {
|
|
74
|
+
this.stopSharing(jid).catch(err => {
|
|
75
|
+
this.logger.warn(`Failed to auto-stop live location: ${err.message}`);
|
|
76
|
+
});
|
|
77
|
+
}, expirationMs);
|
|
78
|
+
}
|
|
79
|
+
return messageId;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Update live location coordinates
|
|
83
|
+
*/
|
|
84
|
+
async updateLocation(jid, location) {
|
|
85
|
+
const jidStr = (0, jid_js_1.jidToString)(jid);
|
|
86
|
+
const existing = this.activeShares.get(jidStr);
|
|
87
|
+
if (!existing) {
|
|
88
|
+
throw new Error(`No active live location sharing with ${jidStr}`);
|
|
89
|
+
}
|
|
90
|
+
const seq = (this.sequenceCounters.get(jidStr) ?? 0) + 1;
|
|
91
|
+
this.sequenceCounters.set(jidStr, seq);
|
|
92
|
+
const updated = { ...existing, ...location, sequenceNumber: seq };
|
|
93
|
+
this.activeShares.set(jidStr, updated);
|
|
94
|
+
const messageId = (0, message_encoder_js_1.generateMessageId)();
|
|
95
|
+
const node = {
|
|
96
|
+
tag: 'message',
|
|
97
|
+
attrs: {
|
|
98
|
+
to: jidStr,
|
|
99
|
+
type: 'location',
|
|
100
|
+
id: messageId
|
|
101
|
+
},
|
|
102
|
+
content: [
|
|
103
|
+
{
|
|
104
|
+
tag: 'live_location_update',
|
|
105
|
+
attrs: {
|
|
106
|
+
degrees_latitude: updated.latitude.toString(),
|
|
107
|
+
degrees_longitude: updated.longitude.toString(),
|
|
108
|
+
accuracy: updated.accuracy.toString(),
|
|
109
|
+
speed: (updated.speed ?? 0).toString(),
|
|
110
|
+
heading: (updated.heading ?? 0).toString(),
|
|
111
|
+
altitude: (updated.altitude ?? 0).toString(),
|
|
112
|
+
sequence_number: seq.toString()
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
};
|
|
117
|
+
this.send((0, binary_js_1.encodeBinaryNode)(node));
|
|
118
|
+
this.logger.debug(`Updated live location #${seq} for ${jidStr}`);
|
|
119
|
+
return messageId;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Stop sharing live location
|
|
123
|
+
* Fix Baileys issue: tidak bisa stop live location
|
|
124
|
+
*/
|
|
125
|
+
async stopSharing(jid) {
|
|
126
|
+
const jidStr = (0, jid_js_1.jidToString)(jid);
|
|
127
|
+
if (!this.activeShares.has(jidStr)) {
|
|
128
|
+
this.logger.debug(`No active live location sharing with ${jidStr}`);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const seq = (this.sequenceCounters.get(jidStr) ?? 0) + 1;
|
|
132
|
+
this.sequenceCounters.set(jidStr, seq);
|
|
133
|
+
const messageId = (0, message_encoder_js_1.generateMessageId)();
|
|
134
|
+
const node = {
|
|
135
|
+
tag: 'message',
|
|
136
|
+
attrs: {
|
|
137
|
+
to: jidStr,
|
|
138
|
+
type: 'location',
|
|
139
|
+
id: messageId
|
|
140
|
+
},
|
|
141
|
+
content: [
|
|
142
|
+
{
|
|
143
|
+
tag: 'live_location_end',
|
|
144
|
+
attrs: {
|
|
145
|
+
sequence_number: seq.toString()
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
]
|
|
149
|
+
};
|
|
150
|
+
this.send((0, binary_js_1.encodeBinaryNode)(node));
|
|
151
|
+
this.activeShares.delete(jidStr);
|
|
152
|
+
this.logger.info(`Stopped live location sharing with ${jidStr}`);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Stop all active live location sharing
|
|
156
|
+
*/
|
|
157
|
+
async stopAllSharing() {
|
|
158
|
+
const jids = Array.from(this.activeShares.keys());
|
|
159
|
+
for (const jid of jids) {
|
|
160
|
+
try {
|
|
161
|
+
await this.stopSharing(jid);
|
|
162
|
+
}
|
|
163
|
+
catch (err) {
|
|
164
|
+
this.logger.warn(`Failed to stop sharing with ${jid}: ${err.message}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Get all active live location sharing
|
|
170
|
+
*/
|
|
171
|
+
getActiveShares() {
|
|
172
|
+
const result = [];
|
|
173
|
+
for (const [jid, location] of this.activeShares.entries()) {
|
|
174
|
+
result.push({ jid, location });
|
|
175
|
+
}
|
|
176
|
+
return result;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Check if currently sharing live location with a chat
|
|
180
|
+
*/
|
|
181
|
+
isSharing(jid) {
|
|
182
|
+
return this.activeShares.has((0, jid_js_1.jidToString)(jid));
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Get sequence number untuk a chat
|
|
186
|
+
*/
|
|
187
|
+
getSequenceNumber(jid) {
|
|
188
|
+
return this.sequenceCounters.get((0, jid_js_1.jidToString)(jid)) ?? 0;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Send static location message (non-live)
|
|
192
|
+
*/
|
|
193
|
+
async sendStaticLocation(jid, latitude, longitude, options = {}) {
|
|
194
|
+
const messageId = (0, message_encoder_js_1.generateMessageId)();
|
|
195
|
+
const node = {
|
|
196
|
+
tag: 'message',
|
|
197
|
+
attrs: {
|
|
198
|
+
to: (0, jid_js_1.jidToString)(jid),
|
|
199
|
+
type: 'location',
|
|
200
|
+
id: messageId
|
|
201
|
+
},
|
|
202
|
+
content: [
|
|
203
|
+
{
|
|
204
|
+
tag: 'location_message',
|
|
205
|
+
attrs: {
|
|
206
|
+
degrees_latitude: latitude.toString(),
|
|
207
|
+
degrees_longitude: longitude.toString(),
|
|
208
|
+
name: options.name ?? '',
|
|
209
|
+
address: options.address ?? ''
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
]
|
|
213
|
+
};
|
|
214
|
+
this.send((0, binary_js_1.encodeBinaryNode)(node));
|
|
215
|
+
return messageId;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Parse incoming live location message
|
|
219
|
+
*/
|
|
220
|
+
parseLiveLocationMessage(message) {
|
|
221
|
+
const liveLocation = message?.live_location_message ?? message?.liveLocationMessage;
|
|
222
|
+
if (!liveLocation)
|
|
223
|
+
return null;
|
|
224
|
+
return {
|
|
225
|
+
latitude: parseFloat(liveLocation.degreesLatitude ?? liveLocation.degrees_latitude ?? '0'),
|
|
226
|
+
longitude: parseFloat(liveLocation.degreesLongitude ?? liveLocation.degrees_longitude ?? '0'),
|
|
227
|
+
accuracy: parseFloat(liveLocation.accuracy ?? '0'),
|
|
228
|
+
speed: parseFloat(liveLocation.speed ?? '0'),
|
|
229
|
+
heading: parseFloat(liveLocation.heading ?? '0'),
|
|
230
|
+
altitude: parseFloat(liveLocation.altitude ?? '0'),
|
|
231
|
+
expiration: parseInt(liveLocation.expiration ?? '0', 10),
|
|
232
|
+
caption: liveLocation.caption,
|
|
233
|
+
sequenceNumber: parseInt(liveLocation.sequenceNumber ?? liveLocation.sequence_number ?? '0', 10)
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
exports.LiveLocationManager = LiveLocationManager;
|
|
238
|
+
//# sourceMappingURL=live-location.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-location.js","sourceRoot":"","sources":["../../src/community/live-location.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAGH,iDAAiE;AACjE,4CAA8C;AAC9C,uEAAqF;AACrF,kDAAkD;AAoBlD,MAAa,mBAAmB;IACtB,IAAI,CAA6B;IACjC,iBAAiB,CAA4D;IAC7E,MAAM,CAAW;IACjB,YAAY,GAA8B,IAAI,GAAG,EAAE,CAAC,CAAC,2BAA2B;IAChF,gBAAgB,GAAwB,IAAI,GAAG,EAAE,CAAC;IAE1D,YAAY,IAAgC;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,wBAAY,EAAE,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAChB,GAAY,EACZ,QAA8C,EAC9C,UAAmB;QAEnB,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEvC,MAAM,YAAY,GAAiB,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC;QACxE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAE5C,MAAM,SAAS,GAAG,IAAA,sCAAiB,GAAE,CAAC;QACtC,MAAM,IAAI,GAAe;YACvB,GAAG,EAAE,SAAS;YACd,KAAK,EAAE;gBACL,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,UAAU;gBAChB,EAAE,EAAE,SAAS;aACd;YACD,OAAO,EAAE;gBACP;oBACE,GAAG,EAAE,uBAAuB;oBAC5B,KAAK,EAAE;wBACL,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE;wBAC9C,iBAAiB,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE;wBAChD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE;wBACtC,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;wBACvC,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;wBAC3C,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;wBAC7C,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE;wBAC1C,eAAe,EAAE,GAAG,CAAC,QAAQ,EAAE;wBAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;qBAChC;iBACF;aACF;SACF,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,MAAM,iBAAiB,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;QAEvG,6BAA6B;QAC7B,IAAI,UAAU,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;YACtE,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxE,CAAC,CAAC,CAAC;YACL,CAAC,EAAE,YAAY,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,GAAY,EACZ,QAA+B;QAE/B,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,wCAAwC,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEvC,MAAM,OAAO,GAAiB,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC;QAChF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEvC,MAAM,SAAS,GAAG,IAAA,sCAAiB,GAAE,CAAC;QACtC,MAAM,IAAI,GAAe;YACvB,GAAG,EAAE,SAAS;YACd,KAAK,EAAE;gBACL,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,UAAU;gBAChB,EAAE,EAAE,SAAS;aACd;YACD,OAAO,EAAE;gBACP;oBACE,GAAG,EAAE,sBAAsB;oBAC3B,KAAK,EAAE;wBACL,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE;wBAC7C,iBAAiB,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE;wBAC/C,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE;wBACrC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;wBACtC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;wBAC1C,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;wBAC5C,eAAe,EAAE,GAAG,CAAC,QAAQ,EAAE;qBAChC;iBACF;aACF;SACF,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,GAAG,QAAQ,MAAM,EAAE,CAAC,CAAC;QACjE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,GAAY;QAC5B,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,MAAM,EAAE,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEvC,MAAM,SAAS,GAAG,IAAA,sCAAiB,GAAE,CAAC;QACtC,MAAM,IAAI,GAAe;YACvB,GAAG,EAAE,SAAS;YACd,KAAK,EAAE;gBACL,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,UAAU;gBAChB,EAAE,EAAE,SAAS;aACd;YACD,OAAO,EAAE;gBACP;oBACE,GAAG,EAAE,mBAAmB;oBACxB,KAAK,EAAE;wBACL,eAAe,EAAE,GAAG,CAAC,QAAQ,EAAE;qBAChC;iBACF;aACF;SACF,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QAClD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,eAAe;QACb,MAAM,MAAM,GAAmD,EAAE,CAAC;QAClE,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,GAAY;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,GAAY;QAC5B,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,GAAY,EACZ,QAAgB,EAChB,SAAiB,EACjB,UAGI,EAAE;QAEN,MAAM,SAAS,GAAG,IAAA,sCAAiB,GAAE,CAAC;QACtC,MAAM,IAAI,GAAe;YACvB,GAAG,EAAE,SAAS;YACd,KAAK,EAAE;gBACL,EAAE,EAAE,IAAA,oBAAW,EAAC,GAAG,CAAC;gBACpB,IAAI,EAAE,UAAU;gBAChB,EAAE,EAAE,SAAS;aACd;YACD,OAAO,EAAE;gBACP;oBACE,GAAG,EAAE,kBAAkB;oBACvB,KAAK,EAAE;wBACL,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,EAAE;wBACrC,iBAAiB,EAAE,SAAS,CAAC,QAAQ,EAAE;wBACvC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;wBACxB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;qBAC/B;iBACF;aACF;SACF,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,CAAC,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,OAAY;QACnC,MAAM,YAAY,GAAG,OAAO,EAAE,qBAAqB,IAAI,OAAO,EAAE,mBAAmB,CAAC;QACpF,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAE/B,OAAO;YACL,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,eAAe,IAAI,YAAY,CAAC,gBAAgB,IAAI,GAAG,CAAC;YAC1F,SAAS,EAAE,UAAU,CAAC,YAAY,CAAC,gBAAgB,IAAI,YAAY,CAAC,iBAAiB,IAAI,GAAG,CAAC;YAC7F,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,QAAQ,IAAI,GAAG,CAAC;YAClD,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,KAAK,IAAI,GAAG,CAAC;YAC5C,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,OAAO,IAAI,GAAG,CAAC;YAChD,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,QAAQ,IAAI,GAAG,CAAC;YAClD,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,UAAU,IAAI,GAAG,EAAE,EAAE,CAAC;YACxD,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,cAAc,EAAE,QAAQ,CAAC,YAAY,CAAC,cAAc,IAAI,YAAY,CAAC,eAAe,IAAI,GAAG,EAAE,EAAE,CAAC;SACjG,CAAC;IACJ,CAAC;CACF;AAvPD,kDAuPC"}
|