Skip to content
This repository was archived by the owner on Dec 5, 2025. It is now read-only.

Commit 79491e7

Browse files
authored
Merge pull request #203 from kodadot/svg-games
Can show svg games (svg+xml)
2 parents 9461766 + 85fa6b8 commit 79491e7

File tree

6 files changed

+31
-2
lines changed

6 files changed

+31
-2
lines changed

dashboard/src/components/rmrk/Gallery/GalleryItem.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ export default class GalleryItem extends Vue {
162162
const { headers } = await api.head(this.nft.animation_url);
163163
this.mimeType = headers['content-type'];
164164
const mediaType = resolveMedia(this.mimeType);
165-
this.imageVisible = ![MediaType.VIDEO, MediaType.IMAGE, MediaType.MODEL].some(
165+
this.imageVisible = ![MediaType.VIDEO, MediaType.IMAGE, MediaType.MODEL, MediaType.IFRAME].some(
166166
t => t === mediaType
167167
);
168168
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<template>
2+
3+
<iframe class="iframe-model__wrapper" :src="src" :alt="mimeType" />
4+
</template>
5+
6+
<script lang="ts" >
7+
import { Component, Prop, Vue, Watch } from 'vue-property-decorator';
8+
@Component({})
9+
export default class ImageMedia extends Vue {
10+
@Prop() public src!: string;
11+
@Prop() public mimeType!: string;
12+
}
13+
</script>
14+
15+
<style scoped>
16+
.iframe-model__wrapper {
17+
height: 100%;
18+
min-height: 37em;
19+
width: 100%;
20+
}
21+
</style>

dashboard/src/components/rmrk/Media/MediaResolver.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const ImageMedia = () => import('./ImageMedia.vue')
1313
const AudioMedia = () => import('./AudioMedia.vue')
1414
const JsonMedia = () => import('./JsonMedia.vue')
1515
const ModelMedia = () => import('./ModelMedia.vue')
16+
const IFrameMedia = () => import('./IFrameMedia.vue')
1617
const Media = () => import('./Unknown.vue')
1718
const SUFFIX = 'Media'
1819
@Component({
@@ -22,6 +23,7 @@ const SUFFIX = 'Media'
2223
AudioMedia,
2324
JsonMedia,
2425
ModelMedia,
26+
IFrameMedia,
2527
Media
2628
}
2729
})

dashboard/src/components/rmrk/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ export enum MediaType {
6363
AUDIO = 'Audio',
6464
JSON = 'Json',
6565
TEXT = 'Text',
66+
IFRAME = 'IFrame',
6667
UNKNOWN = ''
6768
}
6869

dashboard/src/components/rmrk/utils.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,10 @@ export const resolveMedia = (mimeType: string): MediaType => {
201201
return MediaType.MODEL;
202202
}
203203

204+
if (/^image\/svg\+xml/.test(mimeType)) {
205+
return MediaType.IFRAME
206+
}
207+
204208
const match = mimeType.match(/^[a-z]+/);
205209

206210
if (!match) {

dashboard/tslint.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"quotemark": [true, "single"],
1818
"no-console": false,
1919
"no-trailing-whitespace": false,
20-
"max-classes-per-file": [true, 2]
20+
"max-classes-per-file": [true, 2],
21+
"no-string-literal": false
2122
}
2223
}

0 commit comments

Comments
 (0)