Skip to content

Commit ecad6c4

Browse files
committed
Use AssetsBaseUrl
1 parent 7f2741d commit ecad6c4

11 files changed

Lines changed: 49 additions & 12 deletions

File tree

MyApp.ServiceInterface/AppConfig.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ public class AppConfig
99
public string FeaturedSubTitle { get; set; } = "Explore AI generated creations";
1010
public string LocalBaseUrl { get; set; } = "https://localhost:5001";
1111
public string PublicBaseUrl { get; set; } = "https://my-app.org";
12+
public string? AssetsBaseUrl { get; set; }
13+
public string? FallbackAssetsBaseUrl { get; set; }
1214
public string AppDataPath { get; set; } = "App_Data";
1315
public string ArtifactsPath { get; set; } = "App_Data/artifacts";
1416
public string FilesPath { get; set; } = "App_Data/files";
@@ -43,6 +45,8 @@ public class AppConfig
4345
FeaturedTitle = FeaturedTitle,
4446
FeaturedSubTitle = FeaturedSubTitle,
4547
PublicBaseUrl = PublicBaseUrl,
48+
AssetsBaseUrl = AssetsBaseUrl ?? PublicBaseUrl,
49+
FallbackAssetsBaseUrl = FallbackAssetsBaseUrl,
4650
SystemUserId = SystemUserId,
4751
FeaturedUserIds = FeaturedUserIds,
4852
};
@@ -55,6 +59,8 @@ public class VueAppConfig
5559
public string FeaturedTitle { get; set; }
5660
public string FeaturedSubTitle { get; set; }
5761
public string PublicBaseUrl { get; set; }
62+
public string AssetsBaseUrl { get; set; }
63+
public string? FallbackAssetsBaseUrl { get; set; }
5864
public string SystemUserId { get; set; }
5965
public string[] FeaturedUserIds { get; set; } = [];
6066
}

MyApp.ServiceInterface/AppData.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1385,6 +1385,16 @@ public IDbConnection OpenAiTaskDb(DateTime? createdDate=null)
13851385
}
13861386
return dbFactory.OpenDbConnection(monthDb);
13871387
}
1388+
1389+
public string AssetUrl(string url) => !url.Contains("://")
1390+
? Config.AssetsBaseUrl.CombineWith(url)
1391+
: url;
1392+
1393+
public string FallbackAssetUrl(string url) => !url.Contains("://")
1394+
? Config.FallbackAssetsBaseUrl != null && Config.FallbackAssetsBaseUrl != Config.AssetsBaseUrl
1395+
? Config.FallbackAssetsBaseUrl.CombineWith(url)
1396+
: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 300'%3E%3Crect width='400' height='300' fill='%23f3f4f6'/%3E%3Cg transform='translate(200,150)'%3E%3Crect x='-50' y='-40' width='100' height='80' fill='none' stroke='%23d1d5db' stroke-width='2' rx='4'/%3E%3Ccircle cx='-25' cy='-15' r='8' fill='%23d1d5db'/%3E%3Cpath d='M-35 10 L-15 -10 L5 10 L25 -5 L25 25 L-35 25 Z' fill='%23d1d5db'/%3E%3C/g%3E%3Ctext x='200' y='220' text-anchor='middle' fill='%239ca3af' font-family='Arial, sans-serif' font-size='14'%3EImage not available%3C/text%3E%3C/svg%3E"
1397+
: url;
13881398
}
13891399

13901400
public record struct ComfyAgentQuery(

MyApp/Components/Pages/Home.razor

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,9 @@
5555
<!-- Image Container with dynamic aspect ratio -->
5656
<a href="/generations/@artifact.GenerationId">
5757
<div class="overflow-hidden bg-gray-100 dark:bg-gray-700" style="aspect-ratio: @GetAspectRatio(artifact)">
58-
<img src="@artifact.Url" data-id="@artifact.Id"
59-
alt="Generated artifact"
58+
<img src="@AppData.AssetUrl(artifact.Url)"
59+
data-id="@artifact.Id" data-src="@artifact.Url"
60+
alt="Generated artifact"
6061
class="artifact w-full h-full object-cover group-hover:scale-105 transition-transform duration-300 cursor-pointer"
6162
loading="lazy" />
6263
</div>
@@ -148,7 +149,7 @@
148149
import { store, events } from "/mjs/app.mjs"
149150
150151
document.querySelectorAll('img.artifact').forEach(img => {
151-
img.onerror = function (e) { this.src=store.getArtifactImageErrorUrl(Number(this.dataset.id), null, 300) }
152+
img.onerror = function (e) { this.src=store.fallbackAssetUrl(this.dataset.src) }
152153
img.oncontextmenu = function (e) {
153154
e.preventDefault()
154155
events.publish('showArtifactMenu', { artifactId:Number(this.dataset.id), event:e })

MyApp/appsettings.Development.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
}
2020
},
2121
"AppConfig": {
22-
"PublicBaseUrl": "https://gateway.com",
22+
"PublicBaseUrl": "https://localhost:5001",
23+
"AssetsBaseUrl": "https://localhost:5001",
2324
"TaskConnection": "DataSource=../App_Data/tasks/{db};Cache=Shared",
2425
"AppDataPath": "../App_Data",
2526
"ArtifactsPath": "../App_Data/artifacts",

MyApp/appsettings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"FeaturedSubTitle": "Discover amazing AI-generated creations from our community.",
2121
"LocalBaseUrl": "https://localhost:5001",
2222
"PublicBaseUrl": "https://ubixar.com",
23+
"AssetsBaseUrl": "https://www.ubixar.com",
2324
"TaskConnection": "DataSource=/app/App_Data/tasks/{db};Cache=Shared",
2425
"AppDataPath": "/app/App_Data",
2526
"ArtifactsPath": "/app/App_Data/artifacts",

MyApp/wwwroot/pages/Audio.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ export default {
149149
150150
<div class="z-10 flex items-center">
151151
<div class="flex-grow my-2 border-2 border-gray-700 max-w-3xl mx-auto rounded-lg overflow-hidden">
152-
<AudioPlayer ref="refAudio" :src="playAudio?.url" :clsFilter="cls => cls.replace('dark:bg-black/70', 'dark:bg-black/20')"/>
152+
<AudioPlayer ref="refAudio" :src="store.assetUrl(playAudio?.url)" :clsFilter="cls => cls.replace('dark:bg-black/70', 'dark:bg-black/20')"/>
153153
</div>
154154
<div class="space-y-2">
155155
<RouterLink :to="{ path:'/generate/feed', query: { 'new':'', remix: playAudio.generationId } }"

MyApp/wwwroot/pages/Generation.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export default {
5454
</svg>
5555
</div>
5656
57-
<AudioPlayer ref="refAudio" :src="selectedUrl" :clsFilter="cls => cls.replace('dark:bg-black/70', 'dark:bg-black/20')"/>
57+
<AudioPlayer ref="refAudio" :src="store.assetUrl(selectedUrl)" :clsFilter="cls => cls.replace('dark:bg-black/70', 'dark:bg-black/20')"/>
5858
</div>
5959
<template v-else>
6060
<!-- Main Image - only show if rating is viewable -->

MyApp/wwwroot/pages/Home.mjs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ export default {
4343
<!-- Image Container with dynamic aspect ratio -->
4444
<RouterLink :to="{ path:'/generations/' + artifact.generationId }">
4545
<div class="overflow-hidden bg-gray-100 dark:bg-gray-700" :style="'aspect-ratio: ' + getAspectRatio(artifact)">
46-
<img :src="artifact.url"
46+
<img :src="store.assetUrl(artifact.url)"
47+
onerror="this.src=store.fallbackAssetUrl(artifact.url)"
4748
alt="Generated artifact"
4849
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300 cursor-pointer"
4950
loading="lazy"
50-
@contextmenu.prevent="events.publish('showArtifactMenu', { artifactId:artifact.id, event:$event })"
51-
@error="imageSrc=store.getArtifactImageErrorUrl(artifact.id, null, 300)" />
51+
@contextmenu.prevent="events.publish('showArtifactMenu', { artifactId:artifact.id, event:$event })" />
5252
</div>
5353
</RouterLink>
5454

MyApp/wwwroot/pages/Images.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import RatingsBadge from "./components/RatingsBadge.mjs"
1212
export const ArtifactImage = {
1313
template:`<div v-if="artifact" class="overflow-hidden" :style="store.getBackgroundStyle(artifact) + ';' + imageStyle">
1414
<img :alt="artifact.prompt" :width="width" :height="height" :class="imageClass"
15-
:src="imageSrc" :loading="loading || 'lazy'" @error="imageSrc=store.getArtifactImageErrorUrl(artifact.id, null, minSize)">
15+
:src="imageSrc" :loading="loading || 'lazy'" @error="imageSrc=store.fallbackAssetUrl(artifact.url)">
1616
</div>`,
1717
props: {
1818
/** @type {import('vue').PropType<Artifact>} */

MyApp/wwwroot/pages/components/Feed.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ export default {
245245
</div>
246246
</div>
247247
<div class="fixed bottom-0 max-w-3xl rounded-tl-lg rounded-tr-lg overflow-hidden" style="min-width:600px;">
248-
<AudioPlayer ref="refAudio" :bus="events" :src="playAudio?.src" :title="playAudio?.title" :autoPlay="true" :showClose="true"
248+
<AudioPlayer ref="refAudio" :bus="events" :src="store.assetUrl(playAudio?.src)" :title="playAudio?.title" :autoPlay="true" :showClose="true"
249249
@playing="playingAudio=$event" @paused="playingAudio=null" @close="playAudio=null" />
250250
</div>
251251
<div ref="refBottom"></div>

0 commit comments

Comments
 (0)