@@ -21,6 +21,13 @@ export const redditClient = new Snoowrap({
21
21
* @param items Array of Reddit messages or comments
22
22
* @returns Array of newly created database records
23
23
*/
24
+ // Helper type guard to determine if an item is a PrivateMessage
25
+ function isPrivateMessage (
26
+ item : Snoowrap . PrivateMessage | Snoowrap . Comment
27
+ ) : item is Snoowrap . PrivateMessage {
28
+ return 'new' in item
29
+ }
30
+
24
31
export async function storeMessages ( items : Array < Snoowrap . PrivateMessage | Snoowrap . Comment > ) {
25
32
const newMessages = [ ]
26
33
console . debug ( `Processing ${ items . length } message(s)` )
@@ -30,7 +37,8 @@ export async function storeMessages(items: Array<Snoowrap.PrivateMessage | Snoow
30
37
31
38
for ( const item of items ) {
32
39
try {
33
- const isMessage = item instanceof Snoowrap . PrivateMessage
40
+ // Use the type guard instead of instanceof
41
+ const isMessage = isPrivateMessage ( item )
34
42
const type = isMessage ? 'private_message' : 'comment'
35
43
36
44
// Check for existing record
@@ -80,17 +88,15 @@ export async function storeMessages(items: Array<Snoowrap.PrivateMessage | Snoow
80
88
badge : 'https://new.codebuilder.org/images/logo2.png' ,
81
89
}
82
90
83
- // Loop and send notifications concurrently
91
+ // Send notifications concurrently
84
92
const notificationPromises = subscriptions . map ( ( sub ) =>
85
93
sendNotification ( sub , notificationPayload )
86
94
)
87
-
88
- // Wait for all notifications to complete
89
95
await Promise . all ( notificationPromises )
90
96
91
97
console . debug ( `Stored new ${ type } [${ createdMsg . redditId } ] from /u/${ createdMsg . author } ` )
92
98
newMessages . push ( createdMsg )
93
- } catch ( error ) {
99
+ } catch ( error : any ) {
94
100
console . error ( `Error processing message ${ item . name } :` , error . message )
95
101
}
96
102
}
0 commit comments