Loading package-lock.json +0 −4 Original line number Diff line number Diff line Loading @@ -3824,7 +3824,6 @@ "@types/node": "^18.0.0 || >=20.0.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" Loading @@ -3839,9 +3838,6 @@ "lightningcss": { "optional": true }, "sass": { "optional": true }, "stylus": { "optional": true }, Loading src/app/helpers/index.ts +19 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ import { useInterfaceStore } from '@/app/stores/interface'; import type { IEntity } from '@/app/interfaces/environment'; import { useDataStore } from '@/app/stores/data'; import { useWebsocketStore } from '@/app/stores/websocket'; import { useFilesWebsocketStore } from '@/app/stores/filesWebsocket'; export async function uploadFile($event: Event) { const target = $event.target as HTMLInputElement; Loading Loading @@ -58,3 +59,21 @@ export const changeOrderHomeEntity = (entityUuid: string, direction: 'up' | 'dow }; websocketStore.sendData(data); }; export function addUrlsToImageEntities(entities: IEntity[]) { const filesWebsocketStore = useFilesWebsocketStore(); const filesBlob = filesWebsocketStore.filesBlob; let index = 0; console.log('filesBlob[0].data', filesBlob[0]); console.log('filesBlob[0].data', filesBlob[0]); console.log('filesBlob.length', filesBlob.length); return entities.map((entity: IEntity) => { if (!entity.image_width) return entity; filesBlob[index] = new Blob([filesBlob[index]], { type: 'image/jpeg' }); entity.imageUrl = URL.createObjectURL(filesBlob[index]); console.log('entity.imageUrl', entity.imageUrl); index += 1; console.log('filesBlob.length', filesBlob.length); return entity; }); } src/app/interfaces/environment.ts +1 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ export interface IEntity { font_size?: string; paragraph_size?: string; text_position?: string; image_blob?: string; image_url?: string; image_width?: number; image_height?: number; Loading src/app/stores/data.ts +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ export const useDataStore = defineStore('dataStore', () => { } function setHomeEntities(entities: IEntity[]) { homeEntities.value = entities; homeEntities.value = [...entities]; } return { sheets, homeEntities, editHomeEntities, setHomeEntities }; }); src/app/stores/filesWebsocket.ts 0 → 100644 +50 −0 Original line number Diff line number Diff line import { defineStore } from 'pinia'; import { useDataStore } from '@/app/stores/data'; import type { IEntity } from '@/app/interfaces/environment'; import { useInterfaceStore } from '@/app/stores/interface'; import { useWebsocketStore } from '@/app/stores/websocket'; export const useFilesWebsocketStore = defineStore('filesWebsocketStore', () => { const socket = ref(); const dataStore = useDataStore(); const interfaceStore = useInterfaceStore(); const homeEntities = computed(() => dataStore.homeEntities); const filesBlob = ref([]); onMounted(() => { socket.value = new WebSocket('ws://localhost:5001'); socket.value.binaryType = 'arraybuffer'; socket.value.onmessage = (response: any) => { console.log('response: ', response); switch (response?.event) { case 'changeHomeBackgroundUrl': interfaceStore.setHomeBackgroundUrlFromDB(response.data?.setting_value); break; case 'editImageHomeEntity': { let entities = [...dataStore.homeEntities]; entities = entities.map((entity: IEntity) => { if (entity.entity_uuid !== response.data.entity_uuid) return entity; return response.data; }); dataStore.editHomeEntities(entities); break; } default: { console.log('default'); filesBlob.value.push(response); } } }; socket.value.onclose = () => { console.log('Websocket connection closed'); }; socket.value.onerror = () => { console.log('Websocket caught an error'); }; }); function sendData(data: any) { socket.value.send(data); } return { filesBlob, sendData }; }); Loading
package-lock.json +0 −4 Original line number Diff line number Diff line Loading @@ -3824,7 +3824,6 @@ "@types/node": "^18.0.0 || >=20.0.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" Loading @@ -3839,9 +3838,6 @@ "lightningcss": { "optional": true }, "sass": { "optional": true }, "stylus": { "optional": true }, Loading
src/app/helpers/index.ts +19 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ import { useInterfaceStore } from '@/app/stores/interface'; import type { IEntity } from '@/app/interfaces/environment'; import { useDataStore } from '@/app/stores/data'; import { useWebsocketStore } from '@/app/stores/websocket'; import { useFilesWebsocketStore } from '@/app/stores/filesWebsocket'; export async function uploadFile($event: Event) { const target = $event.target as HTMLInputElement; Loading Loading @@ -58,3 +59,21 @@ export const changeOrderHomeEntity = (entityUuid: string, direction: 'up' | 'dow }; websocketStore.sendData(data); }; export function addUrlsToImageEntities(entities: IEntity[]) { const filesWebsocketStore = useFilesWebsocketStore(); const filesBlob = filesWebsocketStore.filesBlob; let index = 0; console.log('filesBlob[0].data', filesBlob[0]); console.log('filesBlob[0].data', filesBlob[0]); console.log('filesBlob.length', filesBlob.length); return entities.map((entity: IEntity) => { if (!entity.image_width) return entity; filesBlob[index] = new Blob([filesBlob[index]], { type: 'image/jpeg' }); entity.imageUrl = URL.createObjectURL(filesBlob[index]); console.log('entity.imageUrl', entity.imageUrl); index += 1; console.log('filesBlob.length', filesBlob.length); return entity; }); }
src/app/interfaces/environment.ts +1 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ export interface IEntity { font_size?: string; paragraph_size?: string; text_position?: string; image_blob?: string; image_url?: string; image_width?: number; image_height?: number; Loading
src/app/stores/data.ts +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ export const useDataStore = defineStore('dataStore', () => { } function setHomeEntities(entities: IEntity[]) { homeEntities.value = entities; homeEntities.value = [...entities]; } return { sheets, homeEntities, editHomeEntities, setHomeEntities }; });
src/app/stores/filesWebsocket.ts 0 → 100644 +50 −0 Original line number Diff line number Diff line import { defineStore } from 'pinia'; import { useDataStore } from '@/app/stores/data'; import type { IEntity } from '@/app/interfaces/environment'; import { useInterfaceStore } from '@/app/stores/interface'; import { useWebsocketStore } from '@/app/stores/websocket'; export const useFilesWebsocketStore = defineStore('filesWebsocketStore', () => { const socket = ref(); const dataStore = useDataStore(); const interfaceStore = useInterfaceStore(); const homeEntities = computed(() => dataStore.homeEntities); const filesBlob = ref([]); onMounted(() => { socket.value = new WebSocket('ws://localhost:5001'); socket.value.binaryType = 'arraybuffer'; socket.value.onmessage = (response: any) => { console.log('response: ', response); switch (response?.event) { case 'changeHomeBackgroundUrl': interfaceStore.setHomeBackgroundUrlFromDB(response.data?.setting_value); break; case 'editImageHomeEntity': { let entities = [...dataStore.homeEntities]; entities = entities.map((entity: IEntity) => { if (entity.entity_uuid !== response.data.entity_uuid) return entity; return response.data; }); dataStore.editHomeEntities(entities); break; } default: { console.log('default'); filesBlob.value.push(response); } } }; socket.value.onclose = () => { console.log('Websocket connection closed'); }; socket.value.onerror = () => { console.log('Websocket caught an error'); }; }); function sendData(data: any) { socket.value.send(data); } return { filesBlob, sendData }; });