{i18n()('config.display.hideNumbers')}
diff --git a/src/core/useConfig.ts b/src/core/useConfig.ts
index 2c11d0e..4d6388f 100644
--- a/src/core/useConfig.ts
+++ b/src/core/useConfig.ts
@@ -32,7 +32,7 @@ export type Config = {
keepOpenPostForm: boolean;
useEmojiReaction: boolean;
showEmojiReaction: boolean;
- showImage: boolean;
+ showMedia: boolean; // TODO 'always' | 'only-followings' | 'never'
hideCount: boolean;
mutedPubkeys: string[];
mutedKeywords: string[];
@@ -80,7 +80,7 @@ const InitialConfig = (): Config => ({
keepOpenPostForm: false,
useEmojiReaction: false,
showEmojiReaction: false,
- showImage: true,
+ showMedia: true,
hideCount: false,
mutedPubkeys: [],
mutedKeywords: [],
diff --git a/src/locales/en.ts b/src/locales/en.ts
index 409a6bd..949247e 100644
--- a/src/locales/en.ts
+++ b/src/locales/en.ts
@@ -98,7 +98,7 @@ export default {
showEmojiReaction: 'Show emoji reactions on posts',
others: 'Others',
keepOpenPostForm: 'Remain the input field open after posting',
- showImagesByDefault: 'Load images by default',
+ showMediaByDefault: 'Load media by default',
hideNumbers: 'Hide the numbers of reactions, reposts and followers',
},
customEmoji: {
diff --git a/src/locales/ja.ts b/src/locales/ja.ts
index e67e615..a777da0 100644
--- a/src/locales/ja.ts
+++ b/src/locales/ja.ts
@@ -96,7 +96,7 @@ export default {
showEmojiReaction: '投稿にリアクションされた絵文字を表示する',
others: 'その他',
keepOpenPostForm: '投稿後も投稿欄を開いたままにする',
- showImagesByDefault: 'デフォルトで画像を読み込む',
+ showMediaByDefault: 'デフォルトで画像や動画を読み込む',
hideNumbers: 'いいねやリポスト、フォロワーなどの数を隠す',
},
customEmoji: {
diff --git a/src/nostr/event/channel.ts b/src/nostr/event/channel.ts
index 1d297d7..84f3fc3 100644
--- a/src/nostr/event/channel.ts
+++ b/src/nostr/event/channel.ts
@@ -1,15 +1,9 @@
import { z } from 'zod';
-import { isImageUrl } from '@/utils/imageUrl';
-
const ChannelMetaSchema = z.object({
name: z.string(),
about: z.string().optional(),
- picture: z
- .string()
- .url()
- .refine((url) => isImageUrl(url), { message: 'not an image url' })
- .optional(),
+ picture: z.string().url().optional(),
});
export type ChannelMeta = z.infer
;
diff --git a/src/utils/imageUrl.test.ts b/src/utils/url.test.ts
similarity index 89%
rename from src/utils/imageUrl.test.ts
rename to src/utils/url.test.ts
index 61249a1..47d639d 100644
--- a/src/utils/imageUrl.test.ts
+++ b/src/utils/url.test.ts
@@ -2,7 +2,7 @@ import assert from 'assert';
import { describe, it } from 'vitest';
-import { fixUrl } from '@/utils/imageUrl';
+import { fixUrl } from '@/utils/url';
describe('fixUrl', () => {
it('should return an image url for a given imgur.com URL with additional path', () => {
diff --git a/src/utils/imageUrl.ts b/src/utils/url.ts
similarity index 82%
rename from src/utils/imageUrl.ts
rename to src/utils/url.ts
index 4e0b2ee..94e0acc 100644
--- a/src/utils/imageUrl.ts
+++ b/src/utils/url.ts
@@ -7,6 +7,15 @@ export const isImageUrl = (urlString: string): boolean => {
}
};
+export const isVideoUrl = (urlString: string): boolean => {
+ try {
+ const url = new URL(urlString);
+ return /\.(mpg|mpeg|mp4|avi|mov|webm|ogv)$/i.test(url.pathname);
+ } catch {
+ return false;
+ }
+};
+
export const fixUrl = (urlString: string): string => {
try {
const url = new URL(urlString);