-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathindex.js
More file actions
75 lines (65 loc) · 2.07 KB
/
index.js
File metadata and controls
75 lines (65 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
const { fetch: nativeFetch } = window;
export function generateUUID() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0,
v = c === 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
export function getCookie(name) {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
}
export function setCookie(name, value, days) {
const expirationDate = new Date();
expirationDate.setTime(expirationDate.getTime() + (days * 24 * 60 * 60 * 1000));
document.cookie = `${name}=${value};expires=${expirationDate.toUTCString()};path=/`;
}
export function getUserId() {
const cookieName = 'chatfaq-user-uuid'
let uuid = getCookie(cookieName);
if (!uuid) {
uuid = generateUUID();
setCookie(cookieName, uuid, 365 * 10); // Save the UUID in cookies for 10 years
}
return uuid;
}
export function createTextMessage(type, content, stack_id, stack_group_id) {
return {
"sender": {
"type": type,
"platform": "WS",
},
"stack": [{
"type": "message",
"payload": {
content
},
}],
"stack_id": stack_id || generateUUID(),
"stack_group_id": stack_group_id || generateUUID(),
"last": true,
};
}
export function createMessage(type, stack, stack_id, stack_group_id) {
return {
"sender": {
"type": type,
"platform": "WS",
},
"stack": stack,
"stack_id": stack_id || generateUUID(),
"stack_group_id": stack_group_id || generateUUID(),
"last": true,
};
}
const logoutEvent = new Event("chatfaq-logout");
window.chatfaqFetch = async (...args) => {
let [resource, config ] = args;
const response = await nativeFetch(resource, config);
if (response.status === 401 || response.status === 403) {
document.dispatchEvent(logoutEvent);
}
return response;
};