Refactor
This commit is contained in:
parent
f64100226d
commit
1a51b98700
20
src/misc/get-drive-file-url.ts
Normal file
20
src/misc/get-drive-file-url.ts
Normal file
|
@ -0,0 +1,20 @@
|
|||
import { IDriveFile } from '../models/drive-file';
|
||||
import config from '../config';
|
||||
|
||||
export default function(file: IDriveFile, thumbnail = false): string {
|
||||
if (file == null) return null;
|
||||
|
||||
if (file.metadata.withoutChunks) {
|
||||
if (thumbnail) {
|
||||
return file.metadata.thumbnailUrl || file.metadata.url;
|
||||
} else {
|
||||
return file.metadata.url;
|
||||
}
|
||||
} else {
|
||||
if (thumbnail) {
|
||||
return `${config.drive_url}/${file._id}?thumbnail`;
|
||||
} else {
|
||||
return `${config.drive_url}/${file._id}`;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,9 +1,9 @@
|
|||
import * as mongo from 'mongodb';
|
||||
const deepcopy = require('deepcopy');
|
||||
import { pack as packFolder } from './drive-folder';
|
||||
import config from '../config';
|
||||
import monkDb, { nativeDbConn } from '../db/mongodb';
|
||||
import isObjectId from '../misc/is-objectid';
|
||||
import getDriveFileUrl from '../misc/get-drive-file-url';
|
||||
|
||||
const DriveFile = monkDb.get<IDriveFile>('driveFiles.files');
|
||||
DriveFile.createIndex('md5');
|
||||
|
@ -33,7 +33,14 @@ export type IMetadata = {
|
|||
thumbnailUrl?: string;
|
||||
src?: string;
|
||||
deletedAt?: Date;
|
||||
|
||||
/**
|
||||
* このファイルの中身データがMongoDB内に保存されているのか否か
|
||||
* オブジェクトストレージを利用している or リモートサーバーへの直リンクである
|
||||
* な場合は false になります
|
||||
*/
|
||||
withoutChunks?: boolean;
|
||||
|
||||
storage?: string;
|
||||
storageProps?: any;
|
||||
isSensitive?: boolean;
|
||||
|
@ -128,8 +135,8 @@ export const pack = (
|
|||
|
||||
_target = Object.assign(_target, _file.metadata);
|
||||
|
||||
_target.url = _file.metadata.url ? _file.metadata.url : `${config.drive_url}/${_target.id}/${encodeURIComponent(_target.name)}`;
|
||||
_target.thumbnailUrl = _file.metadata.thumbnailUrl ? _file.metadata.thumbnailUrl : _file.metadata.url ? _file.metadata.url : `${config.drive_url}/${_target.id}/${encodeURIComponent(_target.name)}?thumbnail`;
|
||||
_target.url = getDriveFileUrl(file);
|
||||
_target.thumbnailUrl = getDriveFileUrl(file, true);
|
||||
_target.isRemote = _file.metadata.isRemote;
|
||||
|
||||
if (_target.properties == null) _target.properties = {};
|
||||
|
|
|
@ -261,16 +261,6 @@ export const pack = (
|
|||
|
||||
if (_user.avatarUrl == null) {
|
||||
_user.avatarUrl = `${config.drive_url}/default-avatar.jpg`;
|
||||
|
||||
// 互換性のため
|
||||
if (_user.avatarId) {
|
||||
_user.avatarUrl = `${config.drive_url}/${_user.avatarId}`;
|
||||
}
|
||||
}
|
||||
|
||||
// 互換性のため
|
||||
if (_user.bannerId && _user.bannerUrl == null) {
|
||||
_user.bannerUrl = `${config.drive_url}/${_user.bannerId}`;
|
||||
}
|
||||
|
||||
if (!meId || !meId.equals(_user.id) || !opts.detail) {
|
||||
|
|
|
@ -15,6 +15,7 @@ import { URL } from 'url';
|
|||
import { resolveNote } from './note';
|
||||
import registerInstance from '../../../services/register-instance';
|
||||
import Instance from '../../../models/instance';
|
||||
import getDriveFileUrl from '../../../misc/get-drive-file-url';
|
||||
|
||||
const log = debug('misskey:activitypub');
|
||||
|
||||
|
@ -303,8 +304,8 @@ export async function updatePerson(uri: string, resolver?: Resolver, hint?: obje
|
|||
featured: person.featured,
|
||||
avatarId: avatar ? avatar._id : null,
|
||||
bannerId: banner ? banner._id : null,
|
||||
avatarUrl: (avatar && avatar.metadata.thumbnailUrl) ? avatar.metadata.thumbnailUrl : (avatar && avatar.metadata.url) ? avatar.metadata.url : null,
|
||||
bannerUrl: banner && banner.metadata.url ? banner.metadata.url : null,
|
||||
avatarUrl: getDriveFileUrl(avatar, true),
|
||||
bannerUrl: getDriveFileUrl(banner, true),
|
||||
description: htmlToMFM(person.summary),
|
||||
followersCount,
|
||||
followingCount,
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import config from '../../../config';
|
||||
import { IDriveFile } from '../../../models/drive-file';
|
||||
import getDriveFileUrl from '../../../misc/get-drive-file-url';
|
||||
|
||||
export default (file: IDriveFile) => ({
|
||||
type: 'Document',
|
||||
mediaType: file.contentType,
|
||||
url: file.metadata.url || `${config.drive_url}/${file._id}`
|
||||
url: getDriveFileUrl(file)
|
||||
});
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import config from '../../../config';
|
||||
import { IDriveFile } from '../../../models/drive-file';
|
||||
import getDriveFileUrl from '../../../misc/get-drive-file-url';
|
||||
|
||||
export default (file: IDriveFile) => ({
|
||||
type: 'Image',
|
||||
url: file.metadata.url || `${config.drive_url}/${file._id}`,
|
||||
url: getDriveFileUrl(file),
|
||||
sensitive: file.metadata.isSensitive
|
||||
});
|
||||
|
|
|
@ -4,9 +4,9 @@ import { publishMainStream } from '../../../../stream';
|
|||
import DriveFile from '../../../../models/drive-file';
|
||||
import acceptAllFollowRequests from '../../../../services/following/requests/accept-all';
|
||||
import { IApp } from '../../../../models/app';
|
||||
import config from '../../../../config';
|
||||
import { publishToFollowers } from '../../../../services/i/update';
|
||||
import getParams from '../../get-params';
|
||||
import getDriveFileUrl from '../../../../misc/get-drive-file-url';
|
||||
|
||||
export const meta = {
|
||||
desc: {
|
||||
|
@ -129,7 +129,7 @@ export default async (params: any, user: ILocalUser, app: IApp) => new Promise(a
|
|||
if (avatar == null) return rej('avatar not found');
|
||||
if (!avatar.contentType.startsWith('image/')) return rej('avatar not an image');
|
||||
|
||||
updates.avatarUrl = avatar.metadata.thumbnailUrl || avatar.metadata.url || `${config.drive_url}/${avatar._id}`;
|
||||
updates.avatarUrl = getDriveFileUrl(avatar, true);
|
||||
|
||||
if (avatar.metadata.properties.avgColor) {
|
||||
updates.avatarColor = avatar.metadata.properties.avgColor;
|
||||
|
@ -144,7 +144,7 @@ export default async (params: any, user: ILocalUser, app: IApp) => new Promise(a
|
|||
if (banner == null) return rej('banner not found');
|
||||
if (!banner.contentType.startsWith('image/')) return rej('banner not an image');
|
||||
|
||||
updates.bannerUrl = banner.metadata.url || `${config.drive_url}/${banner._id}`;
|
||||
updates.bannerUrl = getDriveFileUrl(banner, true);
|
||||
|
||||
if (banner.metadata.properties.avgColor) {
|
||||
updates.bannerColor = banner.metadata.properties.avgColor;
|
||||
|
@ -162,7 +162,7 @@ export default async (params: any, user: ILocalUser, app: IApp) => new Promise(a
|
|||
|
||||
if (wallpaper == null) return rej('wallpaper not found');
|
||||
|
||||
updates.wallpaperUrl = wallpaper.metadata.url || `${config.drive_url}/${wallpaper._id}`;
|
||||
updates.wallpaperUrl = getDriveFileUrl(wallpaper);
|
||||
|
||||
if (wallpaper.metadata.properties.avgColor) {
|
||||
updates.wallpaperColor = wallpaper.metadata.properties.avgColor;
|
||||
|
|
Loading…
Reference in a new issue