diff --git a/src/api.ts b/src/api.ts
index 45fe58253e..7cf652f640 100644
--- a/src/api.ts
+++ b/src/api.ts
@@ -56,6 +56,8 @@ export const onError = async (error: RequestError) => {
if (status === 401 && code === 'INVALID_CREDENTIALS') {
try {
await refresh();
+
+ /** @todo retry failed request */
} catch {
logout({ reason: LogoutReason.ERROR_SESSION_EXPIRED });
}
diff --git a/src/auth.ts b/src/auth.ts
index d86da813da..9daa33a614 100644
--- a/src/auth.ts
+++ b/src/auth.ts
@@ -44,7 +44,7 @@ export async function refresh({ navigate }: LogoutOptions = { navigate: true })
// Refresh the token 10 seconds before the access token expires. This means the user will stay
// logged in without any noticable hickups or delays
- setTimeout(() => refresh(), response.data.data.expires * 1000 + 10 * 1000);
+ setTimeout(() => refresh(), response.data.data.expires * 1000 - 10 * 1000);
appStore.state.authenticated = true;
} catch (error) {
await logout({ navigate, reason: LogoutReason.ERROR_SESSION_EXPIRED });
diff --git a/src/modules/files/routes/detail/detail.vue b/src/modules/files/routes/detail/detail.vue
index fef10e33b5..a761fa79a6 100644
--- a/src/modules/files/routes/detail/detail.vue
+++ b/src/modules/files/routes/detail/detail.vue
@@ -81,8 +81,8 @@
{
+ return (
+ getRootPath() +
+ `assets/${props.primaryKey}?cache-buster=${cacheBuster.value}&key=directus-large-contain`
+ );
+ });
// These are the fields that will be prevented from showing up in the form
const fieldsBlacklist: string[] = [
@@ -282,6 +289,7 @@ export default defineComponent({
moveToFolder,
moving,
selectedFolder,
+ fileSrc,
};
function changeCacheBuster() {
diff --git a/src/views/private/components/file-lightbox/file-lightbox.vue b/src/views/private/components/file-lightbox/file-lightbox.vue
index 6942647228..90f7b49e15 100644
--- a/src/views/private/components/file-lightbox/file-lightbox.vue
+++ b/src/views/private/components/file-lightbox/file-lightbox.vue
@@ -8,7 +8,7 @@
(null);
const cacheBuster = ref(nanoid());
+ const fileSrc = computed(() => {
+ return getRootPath() + `assets/${props.id}?cache-buster=${cacheBuster}`;
+ });
+
watch(
() => props.id,
(newID, oldID) => {
@@ -84,7 +87,7 @@ export default defineComponent({
{ immediate: true }
);
- return { _active, cacheBuster, loading, error, file };
+ return { _active, cacheBuster, loading, error, file, fileSrc };
async function fetchFile() {
cacheBuster.value = nanoid();
@@ -94,7 +97,7 @@ export default defineComponent({
try {
const response = await api.get(`/files/${props.id}`, {
params: {
- fields: ['data', 'type', 'width', 'height', 'title'],
+ fields: ['type', 'width', 'height', 'title'],
},
});
diff --git a/src/views/private/components/revisions-drawer-detail/revisions-drawer-detail.vue b/src/views/private/components/revisions-drawer-detail/revisions-drawer-detail.vue
index 87fd0d32ac..64c1157e8e 100644
--- a/src/views/private/components/revisions-drawer-detail/revisions-drawer-detail.vue
+++ b/src/views/private/components/revisions-drawer-detail/revisions-drawer-detail.vue
@@ -112,6 +112,7 @@ export default defineComponent({
loading.value = true;
try {
+ /** @todo use endpoint thing where startswith directus_ etc */
const response = await api.get(`/items/${collection}/${primaryKey}/revisions`, {
params: {
fields: [