mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-14 21:27:20 +00:00
@@ -79,6 +79,10 @@ export class QuotaConfig {
|
||||
return this.config.configs.memberLimit;
|
||||
}
|
||||
|
||||
get copilotActionLimit() {
|
||||
return this.config.configs.copilotActionLimit || undefined;
|
||||
}
|
||||
|
||||
get humanReadable() {
|
||||
return {
|
||||
name: this.config.configs.name,
|
||||
@@ -86,6 +90,9 @@ export class QuotaConfig {
|
||||
storageQuota: formatSize(this.storageQuota),
|
||||
historyPeriod: formatDate(this.historyPeriod),
|
||||
memberLimit: this.memberLimit.toString(),
|
||||
copilotActionLimit: this.copilotActionLimit
|
||||
? `${this.copilotActionLimit} times`
|
||||
: 'Unlimited',
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,11 +93,35 @@ export const Quotas: Quota[] = [
|
||||
memberLimit: 3,
|
||||
},
|
||||
},
|
||||
{
|
||||
feature: QuotaType.FreePlanV1,
|
||||
type: FeatureKind.Quota,
|
||||
version: 4,
|
||||
configs: {
|
||||
// quota name
|
||||
name: 'Free',
|
||||
// single blob limit 10MB
|
||||
blobLimit: 10 * OneMB,
|
||||
// server limit will larger then client to handle a edge case:
|
||||
// when a user downgrades from pro to free, he can still continue
|
||||
// to upload previously added files that exceed the free limit
|
||||
// NOTE: this is a product decision, may change in future
|
||||
businessBlobLimit: 100 * OneMB,
|
||||
// total blob limit 10GB
|
||||
storageQuota: 10 * OneGB,
|
||||
// history period of validity 7 days
|
||||
historyPeriod: 7 * OneDay,
|
||||
// member limit 3
|
||||
memberLimit: 3,
|
||||
// copilot action limit 10
|
||||
copilotActionLimit: 10,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
export const Quota_FreePlanV1_1 = {
|
||||
feature: Quotas[4].feature,
|
||||
version: Quotas[4].version,
|
||||
feature: Quotas[5].feature,
|
||||
version: Quotas[5].version,
|
||||
};
|
||||
|
||||
export const Quota_ProPlanV1 = {
|
||||
|
||||
@@ -33,6 +33,7 @@ export class QuotaManagementService {
|
||||
storageQuota: quota.feature.storageQuota,
|
||||
historyPeriod: quota.feature.historyPeriod,
|
||||
memberLimit: quota.feature.memberLimit,
|
||||
copilotActionLimit: quota.feature.copilotActionLimit,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -72,6 +73,7 @@ export class QuotaManagementService {
|
||||
historyPeriod,
|
||||
memberLimit,
|
||||
storageQuota,
|
||||
copilotActionLimit,
|
||||
humanReadable,
|
||||
},
|
||||
} = await this.quota.getUserQuota(owner.id);
|
||||
@@ -85,6 +87,7 @@ export class QuotaManagementService {
|
||||
historyPeriod,
|
||||
memberLimit,
|
||||
storageQuota,
|
||||
copilotActionLimit,
|
||||
humanReadable,
|
||||
usedSize,
|
||||
};
|
||||
|
||||
@@ -34,6 +34,7 @@ const quotaPlan = z.object({
|
||||
historyPeriod: z.number().positive().int(),
|
||||
memberLimit: z.number().positive().int(),
|
||||
businessBlobLimit: z.number().positive().int().nullish(),
|
||||
copilotActionLimit: z.number().positive().int().nullish(),
|
||||
}),
|
||||
});
|
||||
|
||||
@@ -65,6 +66,9 @@ export class HumanReadableQuotaType {
|
||||
|
||||
@Field(() => String)
|
||||
memberLimit!: string;
|
||||
|
||||
@Field(() => String, { nullable: true })
|
||||
copilotActionLimit?: string;
|
||||
}
|
||||
|
||||
@ObjectType()
|
||||
@@ -84,6 +88,9 @@ export class QuotaQueryType {
|
||||
@Field(() => SafeIntResolver)
|
||||
storageQuota!: number;
|
||||
|
||||
@Field(() => SafeIntResolver, { nullable: true })
|
||||
copilotActionLimit?: number;
|
||||
|
||||
@Field(() => HumanReadableQuotaType)
|
||||
humanReadable!: HumanReadableQuotaType;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user