-
-
Notifications
You must be signed in to change notification settings - Fork 135
CRUD user info (LinkFree) #663
Conversation
|
|
||
| @OnCommand({ name: 'profile' }) | ||
| async handleProfile(message: Message) { | ||
| const args = message.content.trim().split(/ +/g); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry I didn't look at this sooner, here is what I was thinking
import { ArgNum, ArgRange } from 'discord-nestjs';
import { Expose } from 'class-transformer';
import { IsNumber, Min, IsArray } from 'class-validator';
export class RegistrationDto {
@ArgRange(() => ({ formPosition: 1, toPosition: 4 }))
@Expose()
@IsArray()
name: string[];
@ArgNum((last: number) => ({ position: last }))
@Expose()
@Type(() => Number)
@IsNumber()
@Min(18)
age: number;
}There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But also I thought we could split the command into 2 commands - let me try something
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh I wasnt aware of argRange and argNum :o
|
I created a patch file with some changes, let me know what you think?
diff --git a/src/profile/bio.handler.ts b/src/profile/bio.handler.ts
new file mode 100644
index 0000000..ae3defe
--- /dev/null
+++ b/src/profile/bio.handler.ts
@@ -0,0 +1,18 @@
+import { Injectable } from '@nestjs/common';
+import { OnCommand } from 'discord-nestjs';
+import { Message } from 'discord.js';
+import { ProfileService } from './profile.service';
+
+@Injectable()
+export class BioHandler {
+ constructor(private readonly profileService: ProfileService) {}
+
+ @OnCommand({ name: 'bio' })
+ async handleProfile(message: Message) {
+ const args = message.content.trim().split(/ +/g);
+
+ const response = await this.profileService.updateBio(message, args[1]);
+
+ await message.reply(response);
+ }
+}
diff --git a/src/profile/profile.handler.ts b/src/profile/profile.handler.ts
deleted file mode 100644
index 299f031..0000000
--- a/src/profile/profile.handler.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { Injectable } from '@nestjs/common';
-import { OnCommand } from 'discord-nestjs';
-import { Message } from 'discord.js';
-import { ProfileService } from './profile.service';
-
-@Injectable()
-export class ProfileHandler {
- constructor(private readonly profileService: ProfileService) {}
-
- @OnCommand({ name: 'profile' })
- async handleProfile(message: Message) {
- const args = message.content.trim().split(/ +/g);
-
- let response: string;
-
- switch (args[1]) {
- // !profile create
- case 'create':
- response = await this.profileService.createUser(message);
- break;
-
- // !profile socials twitter https://twitter.com/cahllagerfeld
- case 'socials':
- //TODO args [3] with spaces causes issues with trim function
- response = await this.profileService.updateSocials(
- message,
- args[2],
- args[3],
- );
- break;
-
- case 'bio':
- response = await this.profileService.updateBio(message, args[2]);
- break;
-
- default:
- return await message.reply('Please specify valid arguments');
- }
-
- await message.reply(response);
- }
-}
diff --git a/src/profile/profile.module.ts b/src/profile/profile.module.ts
index 65f28e7..2ce6b69 100644
--- a/src/profile/profile.module.ts
+++ b/src/profile/profile.module.ts
@@ -1,10 +1,11 @@
import { HttpModule, Module } from '@nestjs/common';
import { TokenModule } from '../token/token.module';
-import { ProfileHandler } from './profile.handler';
+import { BioHandler } from './bio.handler';
+import { SocialsHandler } from './socials.handler';
import { ProfileService } from './profile.service';
@Module({
imports: [HttpModule, TokenModule],
- providers: [ProfileService, ProfileHandler],
+ providers: [ProfileService, BioHandler, SocialsHandler],
})
export class ProfileModule {}
diff --git a/src/profile/profile.service.ts b/src/profile/profile.service.ts
index 7c51842..e2841cd 100644
--- a/src/profile/profile.service.ts
+++ b/src/profile/profile.service.ts
@@ -12,31 +12,6 @@ export class ProfileService {
private readonly config: ConfigService,
) {}
- public async createUser(message: Message): Promise<string> {
- const createUserDTO = {
- author: {
- platform: 'discord',
- uid: message.author.id,
- },
- bio: '',
- socials: {},
- };
- const token = await this.tokenCache.returnToken(message.guild.id);
-
- try {
- const response = await this.http
- .post(`${this.config.get('API_URL')}/discord`, createUserDTO, {
- headers: { authorization: `Bearer ${token}` },
- })
- .toPromise();
- console.log(response.data);
- return 'Profile created successfully';
- } catch (error) {
- console.log(error);
- return 'Profile created not successfully';
- }
- }
-
public async updateSocials(message: Message, platform: string, link: string) {
let returnMessage: string = null;
let socialsObject: Socials = {};
@@ -58,8 +33,7 @@ export class ProfileService {
socialsObject = { discord: message.author.username };
break;
default:
- returnMessage = 'Please provide valid social platform';
- break;
+ return 'Please provide valid social platform';
}
const updateUser = {
@@ -67,7 +41,6 @@ export class ProfileService {
platform: 'discord',
uid: message.author.id,
},
- bio: '',
socials: socialsObject,
};
@@ -83,7 +56,6 @@ export class ProfileService {
uid: message.author.id,
},
bio: bio,
- socials: {},
};
return await this.performUpdate(updateUser, message);
}
@@ -105,6 +77,7 @@ export class ProfileService {
.toPromise();
return 'Updated successfully';
} catch (error) {
+ console.log(error);
return 'Update failed';
}
}
diff --git a/src/profile/socials.handler.ts b/src/profile/socials.handler.ts
new file mode 100644
index 0000000..848648a
--- /dev/null
+++ b/src/profile/socials.handler.ts
@@ -0,0 +1,22 @@
+import { Injectable } from '@nestjs/common';
+import { OnCommand } from 'discord-nestjs';
+import { Message } from 'discord.js';
+import { ProfileService } from './profile.service';
+
+@Injectable()
+export class SocialsHandler {
+ constructor(private readonly profileService: ProfileService) {}
+
+ @OnCommand({ name: 'socials' })
+ async handleProfile(message: Message) {
+ const args = message.content.trim().split(/ +/g);
+
+ const response = await this.profileService.updateSocials(
+ message,
+ args[1],
+ args[2],
+ );
+
+ await message.reply(response);
+ }
+} |
|
I'd postpone this PR until we're sure we want to go with the new slash commands. Otherwise we may have to do/fix the open issues from this twice |
|
Closing as going to rewrite to slash commands |
closes #662
create user
update socials
update bio
Trim issue when updating bio in the argument