@@ -3,87 +3,96 @@ import { Storage } from "@plasmohq/storage"
3
3
import { checkSaveConflict } from "~api/checkSaveConflict"
4
4
import { generateToken } from "~api/generateToken"
5
5
import { getDatabase } from "~api/getDatabase"
6
- import { getToken } from "~api/getToken"
7
6
import { saveChat } from "~api/saveChat"
8
7
import { searchNotion } from "~api/search"
9
- import { formatDB } from "~utils/functions/notion"
10
- import type { AutosaveStatus , StoredDatabase } from "~utils/types"
8
+ import type { AutosaveStatus } from "~utils/types"
9
+
10
+ import {
11
+ authenticate ,
12
+ refreshContentScripts ,
13
+ refreshDatabases ,
14
+ refreshIcons ,
15
+ saveFromContextMenu
16
+ } from "./functions"
11
17
12
18
// API calls that can be made from content scripts transit trough the background script
13
19
// This is done to prevent CORS errors
14
- chrome . runtime . onMessage . addListener ( ( message , sender , sendResponse ) => {
15
- switch ( message . type ) {
16
- case "search" :
17
- searchNotion ( message . body . query )
18
- . then ( ( res ) => {
19
- sendResponse ( res )
20
- } )
21
- . catch ( ( err ) => {
22
- console . error ( err )
23
- sendResponse ( { err } )
24
- } )
25
- break
26
- case "checkSaveConflict" :
27
- checkSaveConflict ( message . body )
28
- . then ( ( res ) => {
29
- sendResponse ( res )
30
- } )
31
- . catch ( ( err ) => {
32
- console . error ( err )
33
- sendResponse ( { err } )
34
- } )
35
- break
36
- case "saveChat" :
37
- saveChat ( message . body )
38
- . then ( ( res ) => {
39
- sendResponse ( res )
40
- } )
41
- . catch ( ( err ) => {
42
- console . error ( err )
43
- sendResponse ( { err } )
20
+ // Functions here aren't decoupled from the background script because of odd behavior with sendResponse
21
+ chrome . runtime . onMessageExternal . addListener (
22
+ ( message , sender , sendResponse ) => {
23
+ switch ( message . type ) {
24
+ case "chatgpt-to-notion_search" :
25
+ searchNotion ( message . body . query )
26
+ . then ( ( res ) => {
27
+ sendResponse ( res )
28
+ } )
29
+ . catch ( ( err ) => {
30
+ console . error ( err )
31
+ sendResponse ( { err } )
32
+ } )
33
+ break
34
+ case "chatgpt-to-notion_checkSaveConflict" :
35
+ checkSaveConflict ( message . body )
36
+ . then ( ( res ) => {
37
+ sendResponse ( res )
38
+ } )
39
+ . catch ( ( err ) => {
40
+ console . error ( err )
41
+ sendResponse ( { err } )
42
+ } )
43
+ break
44
+ case "chatgpt-to-notion_saveChat" :
45
+ saveChat ( message . body )
46
+ . then ( ( res ) => {
47
+ sendResponse ( res )
48
+ } )
49
+ . catch ( ( err ) => {
50
+ console . error ( err )
51
+ sendResponse ( { err } )
52
+ } )
53
+ break
54
+ case "chatgpt-to-notion_autoSave" :
55
+ const storage = new Storage ( )
56
+ saveChat ( message . body )
57
+ . then ( ( res ) => {
58
+ sendResponse ( res )
59
+ storage . set ( "autosaveStatus" , "saved" as AutosaveStatus )
60
+ } )
61
+ . catch ( ( err ) => {
62
+ storage . set ( "autosaveStatus" , "error" as AutosaveStatus )
63
+ console . error ( err )
64
+ sendResponse ( { err } )
65
+ } )
66
+ break
67
+ case "chatgpt-to-notion_generateToken" :
68
+ // using two means of checking if user is logged in just to be sure
69
+ const session = new Storage ( {
70
+ area : "session" ,
71
+ secretKeyList : [ "token" ]
44
72
} )
45
- break
46
- case "autoSave" :
47
- const storage = new Storage ( )
48
- saveChat ( message . body )
49
- . then ( ( res ) => {
50
- sendResponse ( res )
51
- storage . set ( "autosaveStatus" , "saved" as AutosaveStatus )
73
+ session . get ( "token" ) . then ( ( token ) => {
74
+ if ( token ) return
75
+ generateToken ( message . body . code ) . then ( ( res ) => {
76
+ sendResponse ( res )
77
+ } )
52
78
} )
53
- . catch ( ( err ) => {
54
- storage . set ( "autosaveStatus" , "error" as AutosaveStatus )
55
- console . error ( err )
56
- sendResponse ( { err } )
57
- } )
58
- break
59
- case "generateToken" :
60
- // using two means of checking if user is logged in just to be sure
61
- const session = new Storage ( {
62
- area : "session" ,
63
- secretKeyList : [ "token" ]
64
- } )
65
- session . get ( "token" ) . then ( ( token ) => {
66
- if ( token ) return
67
- generateToken ( message . body . code ) . then ( ( res ) => {
68
- sendResponse ( res )
69
- } )
70
- } )
71
- break
72
- case "getDB" :
73
- getDatabase ( message . body . id )
74
- . then ( ( res ) => {
75
- sendResponse ( res )
76
- } )
77
- . catch ( ( err ) => {
78
- console . error ( err )
79
- sendResponse ( { err } )
80
- } )
81
- break
82
- default :
83
- return true
79
+ break
80
+ case "chatgpt-to-notion_getDB" :
81
+ getDatabase ( message . body . id )
82
+ . then ( ( res ) => {
83
+ sendResponse ( res )
84
+ } )
85
+ . catch ( ( err ) => {
86
+ console . error ( err )
87
+ sendResponse ( { err } )
88
+ } )
89
+ break
90
+ default :
91
+ return true
92
+ }
93
+ return true
84
94
}
85
- return true
86
- } )
95
+ )
87
96
88
97
chrome . runtime . onInstalled . addListener ( ( ) => {
89
98
refreshContentScripts ( )
@@ -99,16 +108,6 @@ chrome.runtime.onInstalled.addListener(() => {
99
108
targetUrlPatterns : [ "https://chat.openai.com/*" ]
100
109
} )
101
110
} )
102
- await Promise . all ( [
103
- session . set ( "token" , token ) ,
104
- storage . set ( "isPremium" , isPremium ) ,
105
- storage . set ( "activeTrial" , activeTrial && trial_end ) ,
106
- storage . set ( "trialEnd" , trial_end ?? 0 ) ,
107
- storage . set ( "authenticated" , true )
108
- ] )
109
- console . log ( "authenticated" )
110
- return true
111
- }
112
111
113
112
chrome . contextMenus . onClicked . addListener ( ( { menuItemId } ) => {
114
113
saveFromContextMenu ( menuItemId as "append" | "override" )
0 commit comments