feat: clan name discriminators (#1147)
Closes #1145 Reviewed-on: OpenWF/SpaceNinjaServer#1147
This commit is contained in:
parent
1b54bcd1e0
commit
d24aac2ab2
@ -46,7 +46,7 @@ export const addToGuildController: RequestHandler = async (req, res) => {
|
||||
arg: [
|
||||
{
|
||||
Key: "clan",
|
||||
Tag: guild.Name + "#000"
|
||||
Tag: guild.Name
|
||||
}
|
||||
],
|
||||
sub: "/Lotus/Language/Menu/Mailbox_ClanInvite_Title",
|
||||
|
@ -2,7 +2,11 @@ import { RequestHandler } from "express";
|
||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||
import { getJSONfromString } from "@/src/helpers/stringHelpers";
|
||||
import { Guild, GuildMember } from "@/src/models/guildModel";
|
||||
import { updateInventoryForConfirmedGuildJoin } from "@/src/services/guildService";
|
||||
import {
|
||||
createUniqueClanName,
|
||||
getGuildClient,
|
||||
updateInventoryForConfirmedGuildJoin
|
||||
} from "@/src/services/guildService";
|
||||
|
||||
export const createGuildController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
@ -10,7 +14,7 @@ export const createGuildController: RequestHandler = async (req, res) => {
|
||||
|
||||
// Create guild on database
|
||||
const guild = new Guild({
|
||||
Name: payload.guildName
|
||||
Name: await createUniqueClanName(payload.guildName)
|
||||
});
|
||||
await guild.save();
|
||||
|
||||
@ -24,7 +28,7 @@ export const createGuildController: RequestHandler = async (req, res) => {
|
||||
|
||||
await updateInventoryForConfirmedGuildJoin(accountId, guild._id);
|
||||
|
||||
res.json(guild);
|
||||
res.json(await getGuildClient(guild, accountId));
|
||||
};
|
||||
|
||||
interface ICreateGuildRequest {
|
||||
|
@ -3,7 +3,7 @@ import { Guild } from "@/src/models/guildModel";
|
||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||
import { logger } from "@/src/utils/logger";
|
||||
import { getInventory } from "@/src/services/inventoryService";
|
||||
import { getGuildClient } from "@/src/services/guildService";
|
||||
import { createUniqueClanName, getGuildClient } from "@/src/services/guildService";
|
||||
|
||||
const getGuildController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
@ -11,6 +11,12 @@ const getGuildController: RequestHandler = async (req, res) => {
|
||||
if (inventory.GuildId) {
|
||||
const guild = await Guild.findOne({ _id: inventory.GuildId });
|
||||
if (guild) {
|
||||
// Handle guilds created before we added discriminators
|
||||
if (guild.Name.indexOf("#") == -1) {
|
||||
guild.Name = await createUniqueClanName(guild.Name);
|
||||
await guild.save();
|
||||
}
|
||||
|
||||
if (guild.CeremonyResetDate && Date.now() >= guild.CeremonyResetDate.getTime()) {
|
||||
logger.debug(`ascension ceremony is over`);
|
||||
guild.CeremonyEndo = undefined;
|
||||
|
@ -18,6 +18,7 @@ import { ExportDojoRecipes, IDojoBuild } from "warframe-public-export-plus";
|
||||
import { logger } from "../utils/logger";
|
||||
import { config } from "./configService";
|
||||
import { Account } from "../models/loginModel";
|
||||
import { getRandomInt } from "./rngService";
|
||||
|
||||
export const getGuildForRequest = async (req: Request): Promise<TGuildDatabaseDocument> => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
@ -315,3 +316,16 @@ export const updateInventoryForConfirmedGuildJoin = async (
|
||||
|
||||
await inventory.save();
|
||||
};
|
||||
|
||||
export const createUniqueClanName = async (name: string): Promise<string> => {
|
||||
const initialDiscriminator = getRandomInt(0, 999);
|
||||
let discriminator = initialDiscriminator;
|
||||
do {
|
||||
const fullName = name + "#" + discriminator.toString().padStart(3, "0");
|
||||
if (!(await Guild.exists({ Name: fullName }))) {
|
||||
return fullName;
|
||||
}
|
||||
discriminator = (discriminator + 1) % 1000;
|
||||
} while (discriminator != initialDiscriminator);
|
||||
throw new Error(`clan name is so unoriginal it's already been done 1000 times: ${name}`);
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user