Skip to content

Commit

Permalink
rejects shares to bogus account keys (#101)
Browse files Browse the repository at this point in the history
  • Loading branch information
autodidaddict authored and kthomas committed Mar 13, 2024
1 parent fed64b8 commit 9e4e80b
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 52 deletions.
45 changes: 32 additions & 13 deletions natster-io/src/components/File.vue
Original file line number Diff line number Diff line change
Expand Up @@ -37,20 +37,39 @@
<div class="relative">
<VueSpinnerAudio v-if="loading" size="80" class="loading-spinner" />

<video v-if="!!mediaUrl && mimeType.toLowerCase() == 'video/mp4'" v-show="!loading" id="video"
:type="mimeType" :src="mediaUrl" width="640" height="360" autoplay controls></video>
<AudioPlayer :option="getAudioOptions(
mediaUrl,
description == '' ? title : description,
catalog.image
)
" v-else-if="!!mediaUrl && mimeType.toLowerCase() == 'audio/mpeg'" v-show="!loading" @loadedmetadata="playAudio(e)"
:title="title" />
<img v-else-if="blob != null && mimeType.toLowerCase().indexOf('image/') === 0" :src="blobData"
v-show="!loading" :alt="title" />
<p v-else-if="blob != null && mimeType.toLowerCase() === 'text/plain'" v-show="!loading">
{{ blobData }}
<video
v-if="!!mediaUrl && mimeType && mimeType.toLowerCase() == 'video/mp4'"
v-show="!loading"
id="video"
:type="mimeType"
:src="mediaUrl"
width="640"
height="360"
autoplay
controls>
</video>

<AudioPlayer
:option="getAudioOptions(mediaUrl, description == '' ? title : description, catalog.image)"
v-else-if="!!mediaUrl && mimeType && mimeType.toLowerCase() == 'audio/mpeg'"
v-show="!loading"
@loadedmetadata="playAudio(e)"
:title="title"
/>

<img
v-else-if="blob != null && mimeType && mimeType.toLowerCase().indexOf('image/') === 0"
:src="blobData"
v-show="!loading"
:alt="title"
/>

<p
v-else-if="blob != null && mimeType && mimeType.toLowerCase() === 'text/plain'"
v-show="!loading">
{{ blobData }}
</p>

<p v-else v-show="!loading">Error displaying media</p>
</div>
<div class="mt-5 sm:mt-4 sm:flex sm:flex-row-reverse">
Expand Down
6 changes: 5 additions & 1 deletion natster-io/src/components/FileComp.vue
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
Download
</button>
</MenuItem>
<MenuItem v-slot="{ active, disabled }" :disabled="!cStore.isMimeTypeSupported(file.mime_type)">
<MenuItem v-slot="{ active, disabled }" :disabled="!isMimeTypeSupported(file.mime_type)">
<button @click.prevent="
cStore.viewFile(
getFileName(file.path),
Expand Down Expand Up @@ -132,4 +132,8 @@ function catalogImage(cat) {
return cat.image
}
}
function isMimeTypeSupported(mimeType: string) {
return ['image/png', 'image/jpeg', 'video/mp4', 'text/plain', 'audio/mpeg'].includes(mimeType)
}
</script>
21 changes: 4 additions & 17 deletions natster-io/src/stores/catalog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import { saveAs } from 'file-saver'
export const catalogStore = defineStore('catalog', {
state: () => ({
activeDownload: false,
supportedMimeType: ['image/png', 'image/jpeg', 'video/mp4', 'text/plain', 'audio/mpeg'],
numSelected: 0,
catalogs: [] as Catalog[],
pending_catalogs: [] as Catalog[],
Expand Down Expand Up @@ -320,7 +319,7 @@ export const catalogStore = defineStore('catalog', {
timeout = null
}

fStore.render(fileName, fileDescription, mimeType, decrypted, catalog)
fStore.render(fileName, fileDescription, mimeType, decrypted, catalog, chunkIdx, totalChunks)

if (transcoding) {
timeout = setTimeout(() => {
Expand All @@ -338,17 +337,8 @@ export const catalogStore = defineStore('catalog', {
}
}, 5000)
}
} else if (mimeType.toLowerCase() === 'audio/mpeg') {
fStore.render(fileName, fileDescription, mimeType, decrypted, catalog)
} else {
fileArray.push(decrypted)

if (chunkIdx === totalChunks - 1) {
console.log('VIEW FILE', fileArray)
let blob = new Blob(fileArray, { type: mimeType })
console.log('VIEW FILE', blob)
fStore.render(fileName, fileDescription, mimeType, blob, catalog)
}
fStore.render(fileName, fileDescription, mimeType, decrypted, catalog, chunkIdx, totalChunks)
}

if (!transcoding && chunkIdx === totalChunks - 1) {
Expand All @@ -369,8 +359,8 @@ export const catalogStore = defineStore('catalog', {
timeout: 5000
})
.then((m) => {
let data = JSONCodec().decode(m.data)
fileArray = new Array()
// let data = JSONCodec().decode(m.data)
// fileArray = new Array()
})
.catch((err) => {
console.error('nats download request err: ', err)
Expand All @@ -379,9 +369,6 @@ export const catalogStore = defineStore('catalog', {
fStore.reset()
})
},
isMimeTypeSupported(inMime: string) {
return this.supportedMimeType.includes(inMime)
},
},
getters: {
getNumCatalogsSelected(state) {
Expand Down
34 changes: 13 additions & 21 deletions natster-io/src/stores/file.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import { defineStore } from 'pinia'

export const fileStore = defineStore('file', {
state: () => ({
blob: null,
body: null,
buffer: [],
blob: null,
loading: true,
catalog: null,
title: '',
Expand Down Expand Up @@ -48,7 +48,7 @@ export const fileStore = defineStore('file', {
this.show = true
this.onReset = onReset
},
render(title, description, mimeType, data, catalog) {
render(title, description, mimeType, data, catalog, chunkIdx, totalChunks) {
this.title = title
this.description = description
this.mimeType = mimeType
Expand Down Expand Up @@ -114,22 +114,11 @@ export const fileStore = defineStore('file', {

this.mediaSource.addEventListener('sourceopen', () => {
this.audioSourceBuffer = this.mediaSource.addSourceBuffer(`audio/mpeg`)
this.audioSourceBuffer.addEventListener('error', (e) => {
console.log(e)
})

this.audioSourceBuffer.addEventListener('abort', (e) => {
console.log(e)
})
this.audioSourceBuffer.addEventListener('updatestart', (e) => {
console.log(e)
})
this.audioSourceBuffer.addEventListener('update', (e) => {
console.log(e)
})
this.audioSourceBuffer.addEventListener('updateend', (e) => {
console.log(e)
})
this.audioSourceBuffer.addEventListener('error', (e) => {})
this.audioSourceBuffer.addEventListener('abort', (e) => {})
this.audioSourceBuffer.addEventListener('updatestart', (e) => {})
this.audioSourceBuffer.addEventListener('update', (e) => {})
this.audioSourceBuffer.addEventListener('updateend', (e) => {})
})

this.mediaSource.addEventListener('sourceended', (e) => {
Expand Down Expand Up @@ -169,8 +158,12 @@ export const fileStore = defineStore('file', {

this.buffer.push(data)
} else {
this.blob = data
this.loading = false
this.buffer.push(data)

if (chunkIdx == totalChunks - 1) {
this.blob = new Blob(this.buffer, { type: mimeType })
this.loading = false
}
}
},
reset() {
Expand All @@ -196,7 +189,6 @@ export const fileStore = defineStore('file', {
this.mediaSource = null
this.mediaUrl = null
this.mimeType = null
this.blob = null

this.audioSourceBuffer = null
this.videoSourceBuffer = null
Expand Down

0 comments on commit 9e4e80b

Please sign in to comment.