From e0f64a4e2cc12ae1fb640f6b5f75a62ef7f2c599 Mon Sep 17 00:00:00 2001 From: Miodec Date: Fri, 29 Jan 2021 20:32:40 +0000 Subject: [PATCH] added change displayname function --- functions/index.js | 38 ++++++++++++++++++++++++++++++++++++++ src/js/cloud-functions.js | 3 +++ 2 files changed, 41 insertions(+) diff --git a/functions/index.js b/functions/index.js index 85a00691d..63f2945ec 100644 --- a/functions/index.js +++ b/functions/index.js @@ -130,6 +130,44 @@ exports.reserveDisplayName = functions.https.onCall( } ); +exports.changeDisplayName = functions.https.onCall( + async (request, response) => { + try { + if (!isUsernameValid(request.name)) + return { status: -1, message: "Name not valid" }; + let taken = await db + .collection("takenNames") + .doc(request.name.toLowerCase()) + .get(); + taken = taken.data(); + if (taken === undefined || taken.taken === false) { + //not taken + let oldname = admin.auth().getUser(request.uid); + oldname = (await oldname).displayName; + await admin + .auth() + .updateUser(request.uid, { displayName: request.name }); + await db + .collection("users") + .doc(request.uid) + .update({ name: request.name }); + await db.collection("takenNames").doc(request.name.toLowerCase()).set( + { + taken: true, + }, + { merge: true } + ); + await db.collection("takenNames").doc(oldname.toLowerCase()).delete(); + return { status: 1, message: "Updated" }; + } else { + return { status: -2, message: "Name taken." }; + } + } catch (e) { + return { status: -999, message: "Error: " + e.message }; + } + } +); + exports.clearName = functions.auth.user().onDelete((user) => { db.collection("takenNames").doc(user.displayName.toLowerCase()).delete(); db.collection("users").doc(user.uid).delete(); diff --git a/src/js/cloud-functions.js b/src/js/cloud-functions.js index 4c420900f..7597ffe7a 100644 --- a/src/js/cloud-functions.js +++ b/src/js/cloud-functions.js @@ -27,3 +27,6 @@ export const getLeaderboard = firebase .functions() .httpsCallable("getLeaderboard"); export const clearTagPb = firebase.functions().httpsCallable("clearTagPb"); +export const changeDisplayName = firebase + .functions() + .httpsCallable("changeDisplayName");