ソースを参照

feat: added activity feed item for account creation

Signed-off-by: Jonathan <theflametrooper@gmail.com>
Jonathan 5 年 前
コミット
18c3d35d47

+ 6 - 4
backend/logic/actions/users.js

@@ -16,6 +16,7 @@ const cache = moduleManager.modules["cache"];
 const punishments = moduleManager.modules["punishments"];
 const utils = moduleManager.modules["utils"];
 const logger = moduleManager.modules["logger"];
+const activities = moduleManager.modules["activities"];
 
 cache.sub('user.updateUsername', user => {
 	utils.socketsFromUser(user._id, sockets => {
@@ -290,23 +291,24 @@ module.exports = {
 			// respond with the new user
 			(newUser, next) => {
 				mail.schemas.verifyEmail(email, username, verificationToken, () => {
-					next();
+					next(newUser);
 				});
 			}
 
-		], async (err) => {
+		], async (user, err) => {
 			if (err && err !== true) {
 				err = await utils.getError(err);
 				logger.error("USER_PASSWORD_REGISTER", `Register failed with password for user "${username}"."${err}"`);
-				cb({status: 'failure', message: err});
+				return cb({status: 'failure', message: err});
 			} else {
 				module.exports.login(session, email, password, (result) => {
 					let obj = {status: 'success', message: 'Successfully registered.'};
 					if (result.status === 'success') {
 						obj.SID = result.SID;
 					}
+					activities.addActivity(user._id, "created_account");
 					logger.success("USER_PASSWORD_REGISTER", `Register successful with password for user "${username}".`);
-					cb(obj);
+					return cb(obj);
 				});
 			}
 		});

+ 11 - 4
backend/logic/app.js

@@ -16,10 +16,11 @@ module.exports = class extends coreClass {
 		return new Promise((resolve, reject) => {
 			this.setStage(1);
 
-			const 	logger 	= this.logger,
-					mail	= this.moduleManager.modules["mail"],
-					cache	= this.moduleManager.modules["cache"],
-					db		= this.moduleManager.modules["db"];
+			const 	logger 	    = this.logger,
+					mail	    = this.moduleManager.modules["mail"],
+					cache	    = this.moduleManager.modules["cache"],
+					db		    = this.moduleManager.modules["db"],
+					activities	= this.moduleManager.modules["activities"];
 			
 			this.utils = this.moduleManager.modules["utils"];
 
@@ -212,6 +213,12 @@ module.exports = class extends coreClass {
 						db.models.user.create(user, next);
 					},
 
+					// add the activity of account creation
+					(user, next) => {
+						activities.addActivity(user._id, "created_account");
+						next(null, user);
+					},
+
 					(user, next) => {
 						mail.schemas.verifyEmail(address, body.login, user.email.verificationToken);
 						next(null, user._id);

+ 1 - 0
backend/logic/db/schemas/activity.js

@@ -3,6 +3,7 @@ module.exports = {
 	hidden: { type: Boolean, default: false, required: true },
 	userId: { type: String, required: true },
 	activityType: { type: String, enum: [
+		"created_account",
 		"created_station",
 		"deleted_station",
 		"created_playlist",

+ 5 - 0
frontend/components/User/Show.vue

@@ -379,6 +379,7 @@ export default {
 			console.log("activity", res);
 
 			const icons = {
+				created_account: "account_circle",
 				created_station: "radio",
 				deleted_station: "delete",
 				created_playlist: "playlist_add_check",
@@ -399,6 +400,10 @@ export default {
 
 			activity.icon = icons[activity.activityType];
 
+			if (activity.activityType === "created_account") {
+				activity.message = "Welcome to Musare!";
+				return cb(activity);
+			}
 			if (activity.activityType === "created_station") {
 				this.socket.emit(
 					"stations.getStationForActivity",