Skip to content

Commit 4fb5d73

Browse files
committed
fix: crypto undefined on some websites, leading to session creation failure (#231)
1 parent 8af0339 commit 4fb5d73

File tree

6 files changed

+24
-9
lines changed

6 files changed

+24
-9
lines changed

package-lock.json

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
"remark-breaks": "^3.0.2",
4949
"remark-gfm": "^3.0.1",
5050
"remark-math": "^5.1.1",
51+
"uuid": "^9.0.0",
5152
"webextension-polyfill": "^0.10.0"
5253
},
5354
"devDependencies": {

src/background/clients/bing/index.mjs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// https://github.com/waylaidwanderer/node-chatgpt-api
22

3+
import { v4 as uuidv4 } from 'uuid'
4+
35
/**
46
* https://stackoverflow.com/a/58326357
57
* @param {number} size
@@ -52,7 +54,7 @@ export default class BingAIClient {
5254
'sec-fetch-dest': 'empty',
5355
'sec-fetch-mode': 'cors',
5456
'sec-fetch-site': 'same-origin',
55-
'x-ms-client-request-id': crypto.randomUUID(),
57+
'x-ms-client-request-id': uuidv4(),
5658
'x-ms-useragent':
5759
'azsdk-js-api-client-factory/1.0.0-beta.1 core-rest-pipeline/1.10.0 OS/Win32',
5860
cookie: this.options.cookies || `_U=${this.options.userToken}`,
@@ -164,7 +166,7 @@ export default class BingAIClient {
164166
invocationId = 0,
165167
systemMessage,
166168
context,
167-
parentMessageId = jailbreakConversationId === true ? crypto.randomUUID() : null,
169+
parentMessageId = jailbreakConversationId === true ? uuidv4() : null,
168170
abortController = new AbortController(),
169171
} = opts
170172

@@ -201,7 +203,7 @@ export default class BingAIClient {
201203
const stopToken = '\n\n[user](#message)'
202204

203205
if (jailbreakConversationId === true) {
204-
jailbreakConversationId = crypto.randomUUID()
206+
jailbreakConversationId = uuidv4()
205207
}
206208

207209
const conversationKey = jailbreakConversationId
@@ -266,7 +268,7 @@ export default class BingAIClient {
266268
}
267269

268270
const userMessage = {
269-
id: crypto.randomUUID(),
271+
id: uuidv4(),
270272
parentMessageId,
271273
role: 'User',
272274
message,
@@ -503,7 +505,7 @@ export default class BingAIClient {
503505
const { message: reply, conversationExpiryTime } = await messagePromise
504506

505507
const replyMessage = {
506-
id: crypto.randomUUID(),
508+
id: uuidv4(),
507509
parentMessageId: userMessage.id,
508510
role: 'Bing',
509511
message: reply.text,

src/background/index.mjs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Browser from 'webextension-polyfill'
2+
import { v4 as uuidv4 } from 'uuid'
23
import {
34
deleteConversation,
45
generateAnswersWithChatgptWebApi,
@@ -71,9 +72,9 @@ Browser.runtime.onConnect.addListener((port) => {
7172
try {
7273
if (chatgptWebModelKeys.includes(session.modelName)) {
7374
const accessToken = await getChatGptAccessToken()
74-
session.messageId = crypto.randomUUID()
75+
session.messageId = uuidv4()
7576
if (session.parentMessageId == null) {
76-
session.parentMessageId = crypto.randomUUID()
77+
session.parentMessageId = uuidv4()
7778
}
7879
await generateAnswersWithChatgptWebApi(port, session.question, session, accessToken)
7980
} else if (bingWebModelKeys.includes(session.modelName)) {

src/components/ConversationCard/index.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { useTranslation } from 'react-i18next'
1515
import DeleteButton from '../DeleteButton'
1616
import { useConfig } from '../../hooks/use-config.mjs'
1717
import { createSession } from '../../config/localSession.mjs'
18+
import { v4 as uuidv4 } from 'uuid'
1819

1920
const logo = Browser.runtime.getURL('logo.png')
2021

@@ -306,7 +307,7 @@ function ConversationCard(props) {
306307
...session,
307308
sessionName: new Date().toLocaleString(),
308309
autoClean: false,
309-
sessionId: crypto.randomUUID(),
310+
sessionId: uuidv4(),
310311
}
311312
setSession(newSession)
312313
createSession(newSession).then(() =>

src/utils/init-session.mjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Models } from '../config/index.mjs'
2+
import { v4 as uuidv4 } from 'uuid'
23

34
/**
45
* @typedef {object} Session
@@ -43,7 +44,7 @@ export function initSession({
4344
conversationRecords,
4445

4546
sessionName,
46-
sessionId: crypto.randomUUID(),
47+
sessionId: uuidv4(),
4748

4849
aiName: modelName ? Models[modelName].desc : null,
4950
modelName,

0 commit comments

Comments
 (0)