Safetydance is not browser compat

This commit is contained in:
Johannes Zellner
2023-04-16 19:06:14 +02:00
parent 05065fca0e
commit f0f3525b3e
7 changed files with 40 additions and 38 deletions
+4 -2
View File
@@ -11,11 +11,13 @@ export default {
components: { ConfirmDialog },
data() {
return {
accessToken: localStorage.token || ''
};
},
mounted() {
if (!this.accessToken) window.location.href = '/';
if (!localStorage.token) {
if (import.meta.env.BASE_URL !== '/') window.location.href = '/';
else console.error('Set localStorage.token')
}
}
};
+14 -7
View File
@@ -1,6 +1,5 @@
import superagent from 'superagent';
import safe from 'safetydance';
import { sanitize } from 'pankow/utils';
export function createDirectoryModel(origin, accessToken, api) {
@@ -8,9 +7,15 @@ export function createDirectoryModel(origin, accessToken, api) {
return {
name: 'DirectoryModel',
async listFiles(path) {
const [error, result] = await safe(superagent.get(`${origin}/api/v1/${api}/files/${path}`).query({ access_token: accessToken }));
if (error) {
console.error('Failed to list files', error);
let error, result;
try {
result = await superagent.get(`${origin}/api/v1/${api}/files/${path}`).query({ access_token: accessToken });
} catch (e) {
error = e;
}
if (error || result.statusCode !== 200) {
console.error('Failed to list files', error || result.statusCode);
return [];
}
@@ -18,7 +23,7 @@ export function createDirectoryModel(origin, accessToken, api) {
result.body.entries.forEach(item => {
// if we have an image, attach previewUrl
if (item.mimeType.indexOf('image/') === 0) {
item.previewUrl = `${origin}/api/v1/${api}/files/${encodeURIComponent(path + '/' + item.fileName)}?access_token=${accessToken}`
item.previewUrl = `${origin}/api/v1/${api}/files/${encodeURIComponent(path + '/' + item.fileName)}?access_token=${accessToken}`;
}
item.folderPath = path;
@@ -59,8 +64,10 @@ export function createDirectoryModel(origin, accessToken, api) {
.field('overwrite', 'true');
},
async getFile(path) {
const [error, result] = await safe(fetch(`${origin}/api/v1/${api}/files/${path}?access_token=${accessToken}`));
if (error) {
let result;
try {
result = await fetch(`${origin}/api/v1/${api}/files/${path}?access_token=${accessToken}`);
} catch (error) {
console.error('Failed to get file', error);
return null;
}
+22 -7
View File
@@ -72,7 +72,6 @@
<script>
import safe from 'safetydance';
import superagent from 'superagent';
import Button from 'primevue/button';
@@ -291,9 +290,15 @@ export default {
useConfirm();
// load all apps
let [error, result] = await safe(superagent.get(`${this.apiOrigin}/api/v1/apps`).query({ access_token: this.accessToken }));
if (error) {
console.error('Failed to list apps', error);
let error, result;
try {
result = await superagent.get(`${this.apiOrigin}/api/v1/apps`).query({ access_token: this.accessToken });
} catch (e) {
error = e;
}
if (error || result.statusCode !== 200) {
console.error('Failed to list apps', error || result.statusCode);
this.apps = [];
} else {
this.apps = result.body ? result.body.apps.filter(a => !!a.manifest.addons.localstorage) : [];
@@ -301,9 +306,14 @@ export default {
this.apps.forEach(function (a) { a.type = 'app'; a.label = a.fqdn; });
// load all volumes
[error, result] = await safe(superagent.get(`${this.apiOrigin}/api/v1/volumes`).query({ access_token: this.accessToken }));
if (error) {
console.error('Failed to list volumes', error);
try {
result = await superagent.get(`${this.apiOrigin}/api/v1/volumes`).query({ access_token: this.accessToken });
} catch (e) {
error = e;
}
if (error || result.statusCode !== 200) {
console.error('Failed to list volumes', error || result.statusCode);
this.volumes = [];
} else {
this.volumes = result.body ? result.body.volumes : [];
@@ -335,6 +345,11 @@ export default {
this.activeResource = this.apps[0];
}
if (!this.activeResource) {
console.error('Not able to load apps or volumes. Cannot continue');
return;
}
this.cwd = sanitize('/' + (this.$route.params.cwd ? this.$route.params.cwd.join('/') : '/'));
this.loadResource(this.activeResource);