Refactor
This commit is contained in:
		
							parent
							
								
									f64100226d
								
							
						
					
					
						commit
						1a51b98700
					
				
					 7 changed files with 41 additions and 23 deletions
				
			
		
							
								
								
									
										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…
	
	Add table
		Add a link
		
	
		Reference in a new issue