Merge remote-tracking branch 'misskey-dev/develop' into io
This commit is contained in:
@@ -63,18 +63,25 @@ const loading = ref(true);
|
||||
|
||||
const ok = async () => {
|
||||
const promise = new Promise<Misskey.entities.DriveFile>(async (res) => {
|
||||
const croppedCanvas = await cropper?.getCropperSelection()?.$toCanvas();
|
||||
const croppedImage = await cropper?.getCropperImage();
|
||||
const croppedSection = await cropper?.getCropperSelection();
|
||||
|
||||
// 拡大率を計算し、(ほぼ)元の大きさに戻す
|
||||
const zoomedRate = croppedImage.getBoundingClientRect().width / croppedImage.clientWidth;
|
||||
const widthToRender = croppedSection.getBoundingClientRect().width / zoomedRate;
|
||||
|
||||
const croppedCanvas = await croppedSection?.$toCanvas({ width: widthToRender });
|
||||
croppedCanvas?.toBlob(blob => {
|
||||
if (!blob) return;
|
||||
const formData = new FormData();
|
||||
formData.append('file', blob);
|
||||
formData.append('name', `cropped_${props.file.name}`);
|
||||
formData.append('isSensitive', props.file.isSensitive ? 'true' : 'false');
|
||||
formData.append('comment', props.file.comment ?? 'null');
|
||||
if (props.file.comment) { formData.append('comment', props.file.comment);}
|
||||
formData.append('i', $i!.token);
|
||||
if (props.uploadFolder || props.uploadFolder === null) {
|
||||
formData.append('folderId', props.uploadFolder ?? 'null');
|
||||
} else if (defaultStore.state.uploadFolder) {
|
||||
if (props.uploadFolder) {
|
||||
formData.append('folderId', props.uploadFolder);
|
||||
} else if (props.uploadFolder !== null && defaultStore.state.uploadFolder) {
|
||||
formData.append('folderId', defaultStore.state.uploadFolder);
|
||||
}
|
||||
|
||||
|
@@ -129,9 +129,10 @@ export function promiseDialog<T extends Promise<any>>(
|
||||
|
||||
let popupIdCount = 0;
|
||||
export const popups = ref([]) as Ref<{
|
||||
id: any;
|
||||
component: any;
|
||||
id: number;
|
||||
component: Component;
|
||||
props: Record<string, any>;
|
||||
events: Record<string, any>;
|
||||
}[]>;
|
||||
|
||||
const zIndexes = {
|
||||
@@ -145,7 +146,18 @@ export function claimZIndex(priority: keyof typeof zIndexes = 'low'): number {
|
||||
return zIndexes[priority];
|
||||
}
|
||||
|
||||
export async function popup<T extends Component>(component: T, props: ComponentProps<T>, events = {}, disposeEvent?: string) {
|
||||
// InstanceType<typeof Component>['$emit'] だとインターセクション型が返ってきて
|
||||
// 使い物にならないので、代わりに ['$props'] から色々省くことで emit の型を生成する
|
||||
// FIXME: 何故か *.ts ファイルからだと型がうまく取れない?ことがあるのをなんとかしたい
|
||||
type ComponentEmit<T> = T extends new () => { $props: infer Props }
|
||||
? EmitsExtractor<Props>
|
||||
: never;
|
||||
|
||||
type EmitsExtractor<T> = {
|
||||
[K in keyof T as K extends `onVnode${string}` ? never : K extends `on${infer E}` ? Uncapitalize<E> : K extends string ? never : K]: T[K];
|
||||
};
|
||||
|
||||
export async function popup<T extends Component>(component: T, props: ComponentProps<T>, events: ComponentEmit<T> = {} as ComponentEmit<T>, disposeEvent?: keyof ComponentEmit<T>) {
|
||||
markRaw(component);
|
||||
|
||||
const id = ++popupIdCount;
|
||||
|
@@ -214,6 +214,12 @@ const patronsWithIcon = [{
|
||||
}, {
|
||||
name: 'taichan',
|
||||
icon: 'https://assets.misskey-hub.net/patrons/f981ab0159fb4e2c998e05f7263e1cd9.png',
|
||||
}, {
|
||||
name: '猫吉よりお',
|
||||
icon: 'https://assets.misskey-hub.net/patrons/a11518b3b34b4536a4bdd7178ba76a7b.png',
|
||||
}, {
|
||||
name: '有栖かずみ',
|
||||
icon: 'https://assets.misskey-hub.net/patrons/9240e8e0ba294a8884143e99ac7ed6a0.png',
|
||||
}];
|
||||
|
||||
const patrons = [
|
||||
|
Reference in New Issue
Block a user