Skip to content

Commit e0e5711

Browse files
authored
Merge pull request #61 from rtCamp/develop
Release v1.1.1
2 parents f107e8c + 8d1af69 commit e0e5711

File tree

15 files changed

+647
-559
lines changed

15 files changed

+647
-559
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "godam-extension",
3-
"version": "1.1.0",
3+
"version": "1.1.1",
44
"description": "GoDAM Chrome Extension",
55
"scripts": {
66
"build": "node utils/build.js",

src/assets/helper/backup.png

493 KB
Loading

src/manifest.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
"manifest_version": 3,
33
"name": "__MSG_extName__",
44
"description": "__MSG_extDesc__",
5+
"key":"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6ug7k8VXtIZgMEyZUPwsn1ubPUnwkIpcQy9bqh7qsCMHLD+p+exSPM0dxIZrV1j/DzhLCMwh5I5K6STycyL5eNficKK7LQeB/IzGbxRCGbDcdmY+nCNLyilwuEDOJ1zCFMKwZ3X2gX1++vfWi64XGAcBi+aM//sREyIaeGsjsIwxwOUrY1eOaiAPQQJw9O7tQ9/zO4D7YOUC00GVasrLysEuJGMwRuj5tL7Rh5gH9o6uEXvR0F95kDPVbOJykjBuNua1Cv7V7sfTw0TXBgOlCpiDX1/m3o63xLmUGGWUWpKmFSFzVSoWTr1xgOm6EMRO9amSQZj7CZicfmVqSo/YQwIDAQAB",
56
"default_locale": "en",
6-
"version": "1.1.0",
7+
"version": "1.1.1",
78
"background": {
89
"service_worker": "background.bundle.js"
910
},

src/pages/Background/index.js

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1583,14 +1583,14 @@ const checkAvailableMemory = (sendResponse) => {
15831583
};
15841584

15851585
// Add this function to handle sign out from GoDAM
1586-
const handleSignOutGoDAM = async () => {
1586+
const handleSignOutGoDAM = async (sendResponse) => {
15871587
const { godamToken } = await chrome.storage.local.get(["godamToken"]);
1588+
let revokeToken = false;
15881589
if (godamToken) {
15891590
// Revoke token on the server
15901591
const baseUrl = process.env.GODAM_BASE_URL || 'https://app.godam.io';
15911592

15921593
try {
1593-
15941594
await fetch(`${baseUrl}/api/method/frappe.integrations.oauth2.revoke_token`, {
15951595
method: 'POST',
15961596
headers: {
@@ -1601,17 +1601,22 @@ const handleSignOutGoDAM = async () => {
16011601
token: godamToken
16021602
}),
16031603
});
1604+
1605+
revokeToken = true;
16041606
} catch (error) {
1607+
revokeToken = false;
16051608
console.error("Error revoking GoDAM token:", error);
1609+
} finally {
1610+
await chrome.storage.local.remove([
1611+
'godamToken',
1612+
'godamRefreshToken',
1613+
'godamTokenExpiration'
1614+
]);
1615+
return sendResponse({status: 'success', revokeToken});
16061616
}
16071617
}
16081618

1609-
// Clear token from storage
1610-
chrome.storage.local.set({
1611-
godamToken: null,
1612-
godamRefreshToken: null,
1613-
godamTokenExpiration: null
1614-
});
1619+
16151620
};
16161621

16171622
// Function to handle saving to GoDAM
@@ -1653,8 +1658,10 @@ const handleSaveToGoDAM = async (sendResponse, request, fallback = false) => {
16531658

16541659
const handleSignInGoDAM = async (sendResponse) => {
16551660
const signInGoDAM = require('./modules/signInGoDAM').default;
1661+
const setOrgList = require('./modules/setOrgList').default;
16561662

16571663
const token = await signInGoDAM();
1664+
await setOrgList();
16581665

16591666
if (token) {
16601667
sendResponse({ status: "ok", token: token });
@@ -1900,6 +1907,10 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
19001907
const setOrgs = require('./modules/setOrgList').default;
19011908
setOrgs();
19021909
return true;
1910+
} else if (request.type === "get-organisations") {
1911+
const getOrgList = require('./modules/getOrgList').default;
1912+
getOrgList(sendResponse);
1913+
return true;
19031914
}
19041915
});
19051916

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import signInGoDAM from "./signInGoDAM";
2+
3+
// GoDAM OAuth configuration
4+
const clientId = process.env.GODAM_OAUTH_CLIENT_ID;
5+
6+
async function getGoDAMAuthToken() {
7+
const { godamToken, godamRefreshToken, godamTokenExpiration } = await chrome.storage.local.get(["godamToken", "godamRefreshToken", "godamTokenExpiration"]);
8+
9+
// Token is not set, trigger sign-in
10+
if (!godamToken) {
11+
const newToken = await signInGoDAM();
12+
return newToken
13+
}
14+
// Token is set, check if it has expired
15+
const currentTime = Date.now();
16+
17+
if (currentTime < godamTokenExpiration) {
18+
return godamToken
19+
}
20+
21+
const baseUrl = process.env.GODAM_BASE_URL || 'https://app.godam.io';
22+
23+
try {
24+
const refreshResponse = await fetch(`${baseUrl}/api/method/frappe.integrations.oauth2.get_token`, {
25+
method: 'POST',
26+
headers: {
27+
'Content-Type': 'application/x-www-form-urlencoded',
28+
'Accept': 'application/json',
29+
},
30+
credentials: 'omit',
31+
body: new URLSearchParams({
32+
grant_type: 'authorization_code',
33+
refresh_token: godamRefreshToken,
34+
client_id: clientId,
35+
}),
36+
});
37+
38+
if (!refreshResponse.ok) {
39+
// Refresh token failed, try to sign in again
40+
const newToken = await signInGoDAM();
41+
if (!newToken) {
42+
throw new Error("GoDAM token refresh and sign-in failed");
43+
}
44+
return newToken;
45+
}
46+
47+
const tokenData = await refreshResponse.json();
48+
const newToken = tokenData.access_token;
49+
const expiresIn = tokenData.expires_in || 3600;
50+
const expirationTime = Date.now() + expiresIn * 1000;
51+
52+
// Save new token to storage
53+
await chrome.storage.local.set({
54+
godamToken: newToken,
55+
godamRefreshToken: tokenData.refresh_token || godamRefreshToken,
56+
godamTokenExpiration: expirationTime
57+
})
58+
59+
return newToken;
60+
} catch (error) {
61+
// If refresh fails, try to sign in again
62+
const newToken = await signInGoDAM();
63+
if (!newToken) {
64+
throw new Error("GoDAM token refresh and sign-in failed");
65+
}
66+
return newToken
67+
}
68+
}
69+
70+
export default getGoDAMAuthToken
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const getOrgList = async (sendResponse) => {
2+
const { orgList } = await chrome.storage.local.get(["orgList"])
3+
4+
if (orgList){
5+
sendResponse(JSON.parse(orgList))
6+
}else{
7+
sendResponse([])
8+
}
9+
};
10+
11+
export default getOrgList;
Lines changed: 33 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -1,144 +1,52 @@
1-
import signInGoDAM from "./signInGoDAM";
2-
3-
// GoDAM OAuth configuration
4-
const clientId = process.env.GODAM_OAUTH_CLIENT_ID;
1+
import getGoDAMAuthToken from "./getGoDAMAuthToken";
52

63
// Function to upload a video to GoDAM
74
const saveToGoDAM = async (videoBlob, fileName, sendResponse) => {
8-
// Function to get an access token from Chrome storage
9-
async function getGoDAMAuthToken() {
10-
return new Promise((resolve, reject) => {
11-
chrome.storage.local.get(["godamToken", "godamRefreshToken", "godamTokenExpiration"], async (result) => {
12-
if (chrome.runtime.lastError) {
13-
reject(new Error(chrome.runtime.lastError));
14-
} else {
15-
const { godamToken, godamRefreshToken, godamTokenExpiration } = result;
16-
17-
if (!godamToken) {
18-
// Token is not set, trigger sign-in
19-
const newToken = await signInGoDAM();
20-
if (!newToken) {
21-
// Sign-in failed, throw an error
22-
reject(new Error("GoDAM sign-in failed"));
5+
try {
6+
const token = await getGoDAMAuthToken();
7+
const formData = new FormData();
8+
formData.append('file', videoBlob, fileName);
9+
10+
const uploadUrl = process.env.GODAM_UPLOAD_URL || 'https://upload.godam.io'; // Todo: Replace the option with production URL
11+
12+
const url = uploadUrl + '/upload-file';
13+
14+
const uploadResponse = await fetch(
15+
url,
16+
{
17+
method: "POST",
18+
headers: {
19+
Authorization: `Bearer ${token}`,
20+
},
21+
body: formData,
2322
}
24-
resolve(newToken);
25-
} else {
26-
// Token is set, check if it has expired
27-
const currentTime = Date.now();
28-
if (currentTime >= godamTokenExpiration) {
29-
// Token has expired, refresh it
30-
const baseUrl = process.env.GODAM_BASE_URL || 'https://app.godam.io';
31-
try {
32-
const refreshResponse = await fetch(`${baseUrl}/api/method/frappe.integrations.oauth2.get_token`, {
33-
method: 'POST',
34-
headers: {
35-
'Content-Type': 'application/x-www-form-urlencoded',
36-
'Accept': 'application/json',
37-
},
38-
credentials: 'omit',
39-
body: new URLSearchParams({
40-
grant_type: 'authorization_code',
41-
refresh_token: godamRefreshToken,
42-
client_id: clientId,
43-
}),
44-
});
45-
46-
if (!refreshResponse.ok) {
47-
// Refresh token failed, try to sign in again
48-
const newToken = await signInGoDAM();
49-
if (!newToken) {
50-
reject(new Error("GoDAM token refresh and sign-in failed"));
51-
}
52-
resolve(newToken);
53-
return;
54-
}
55-
56-
const tokenData = await refreshResponse.json();
57-
const newToken = tokenData.access_token;
58-
const expiresIn = tokenData.expires_in || 3600;
59-
const expirationTime = Date.now() + expiresIn * 1000;
23+
);
6024

61-
// Save new token to storage
62-
await new Promise((resolve) =>
63-
chrome.storage.local.set({
64-
godamToken: newToken,
65-
godamRefreshToken: tokenData.refresh_token || godamRefreshToken,
66-
godamTokenExpiration: expirationTime
67-
}, () => resolve())
68-
);
69-
70-
resolve(newToken);
71-
} catch (error) {
72-
// If refresh fails, try to sign in again
73-
const newToken = await signInGoDAM();
74-
if (!newToken) {
75-
reject(new Error("GoDAM token refresh and sign-in failed"));
76-
}
77-
resolve(newToken);
78-
}
25+
let message = 'An error occurred while saving to GoDAM!';
26+
if (!uploadResponse.ok) {
27+
// error message
28+
if (uploadResponse.status === 400) {
29+
message = 'An error occurred while saving to GoDAM! <br> Looks like you are not logged in to GoDAM. Please log in again.';
7930
} else {
80-
// Token is still valid
81-
resolve(godamToken);
31+
message = 'An error occurred while saving to GoDAM! <br> Please try again later, if the problem persists, please contact <a href="https://app.godam.io/helpdesk/my-tickets" target="blank">support team</a>.';
8232
}
83-
}
33+
throw new Error(message);
8434
}
85-
});
86-
});
87-
}
88-
89-
return new Promise(async (resolve, reject) => {
90-
try {
91-
// Get the access token from Chrome storage
92-
let token = await getGoDAMAuthToken();
9335

94-
if (!token) {
95-
throw new Error("GoDAM sign-in failed");
96-
}
97-
98-
const formData = new FormData();
99-
formData.append('file', videoBlob, fileName);
36+
const responseData = await uploadResponse.json();
37+
const videoName = responseData?.file_informations?.name;
10038

101-
const uploadUrl = process.env.GODAM_UPLOAD_URL || 'https://upload.godam.io'; // Todo: Replace the option with production URL
39+
const baseURL = process.env.GODAM_BASE_URL || 'https://app.godam.io';
10240

103-
const url = uploadUrl + '/upload-file';
41+
sendResponse({ status: "ok", url: `${baseURL}/web/video/${videoName}` });
10442

105-
const uploadResponse = await fetch(
106-
url,
107-
{
108-
method: "POST",
109-
headers: {
110-
Authorization: `Bearer ${token}`,
111-
},
112-
body: formData,
113-
}
114-
);
43+
} catch (error) {
44+
sendResponse({ status: "error", url: null, message: error.message });
11545

116-
let message = 'An error occurred while saving to GoDAM!';
117-
if (!uploadResponse.ok) {
118-
// error message
119-
if (uploadResponse.status === 400) {
120-
message = 'An error occurred while saving to GoDAM! <br> Looks like you are not logged in to GoDAM. Please log in again.';
121-
} else {
122-
message = 'An error occurred while saving to GoDAM! <br> Please try again later, if the problem persists, please contact <a href="https://app.godam.io/helpdesk/my-tickets" target="blank">support team</a>.';
123-
}
124-
throw new Error(message);
125-
}
46+
}
12647

127-
const responseData = await uploadResponse.json();
128-
const filename = responseData.filename;
129-
const location = responseData.location;
130-
const videoName = responseData?.file_informations?.name;
13148

132-
const baseURL = process.env.GODAM_BASE_URL || 'https://app.godam.io';
133-
134-
sendResponse({ status: "ok", url: `${baseURL}/web/video/${videoName}` });
13549

136-
resolve(`${baseURL}/${location}`);
137-
} catch (error) {
138-
sendResponse({ status: "error", url: null, message: error.message });
139-
reject(error);
140-
}
141-
});
14250
};
14351

14452
export default saveToGoDAM;

0 commit comments

Comments
 (0)