Skip to content

Commit

Permalink
Merge pull request #221 from XDKRGL/xdktc-chatdefault
Browse files Browse the repository at this point in the history
Adds ChatDefault resolves issue #131
  • Loading branch information
dburleson authored Feb 7, 2024
2 parents a51ecf7 + fbd5021 commit a5c9d3a
Show file tree
Hide file tree
Showing 9 changed files with 79 additions and 18 deletions.
26 changes: 26 additions & 0 deletions api/db/migrations/202401170126_member_chatdefault_field.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { Knex } from 'knex';

const columnName = 'chatdefault';

export async function up(knex: Knex): Promise<void> {
if (!await knex.schema.hasColumn('member', columnName)) {
console.log(`Adding ${columnName} column to member table`);
await knex.schema.alterTable('member', table => {
table.integer(columnName)
.unsigned()
.notNullable()
.defaultTo(0);
});
}
}


export async function down(knex: Knex): Promise<void> {
if (await knex.schema.hasColumn('member', columnName)) {
console.log(`Dropping ${columnName} column from member table`);
await knex.schema.alterTable('member', table => {
table.dropColumn(columnName);
});
}
}

15 changes: 8 additions & 7 deletions api/src/controllers/member.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,21 +100,20 @@ class MemberController {
response.status(400).json({error});
}
}
public async updateName(request: Request, response: Response): Promise<void> {

public async updateInfo(request: Request, response: Response): Promise<void> {
const session = this.memberService.decryptSession(request, response);
if (!session) return;
const { id } = session;
const { firstName, lastName } = request.body;
const { firstName, lastName, chatdefault } = request.body;
try {
await this.memberService.updateName(id, firstName, lastName);
await this.memberService.updateInfo(id, firstName, lastName, chatdefault);
response.status(200).json({message: 'success'});
}catch (error) {
} catch (error) {
response.status(400).json({
error: 'Error on Updating',
});
}

}
}

/** isBanned results based on member status
Expand Down Expand Up @@ -212,7 +211,9 @@ class MemberController {
if (!banned) {
await this.memberService.maybeGiveDailyCredits(session.id);
const homeInfo = await this.homeService.getHome(session.id);
const chatdefault = await this.memberService.getMemberChat(session.id);
session.hasHome = !!homeInfo;
session.chatdefault = chatdefault;
}
response.status(200).json({
message: 'success',
Expand Down
4 changes: 2 additions & 2 deletions api/src/routes/member.routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ memberRoutes.post('/update_password',
(request, response) => memberController.updatePassword(request, response));
memberRoutes.post('/update_role',
(request, response) => memberController.updatePrimaryRoleId(request, response));
memberRoutes.post('/updatename',
(request, response) => memberController.updateName(request, response));
memberRoutes.post('/updateinfo',
(request, response) => memberController.updateInfo(request, response));
memberRoutes.post('/update_avatar',
(request, response) => memberController.updateAvatar(request, response));
memberRoutes.post('/send_password_reset',
Expand Down
25 changes: 21 additions & 4 deletions api/src/services/member/member.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -176,9 +176,15 @@ export class MemberService {
xp: member.xp,
firstName: member.firstname,
lastName: member.lastname,
chatdefault: member.chatdefault,
primary_role_id: member.primary_role_id,
};
}

public async getMemberChat(memberId: number): Promise<number> {
const member = await this.find({ id: memberId });
return member.chatdefault;
}

/**
* Builds a member info public view.
Expand All @@ -193,6 +199,7 @@ export class MemberService {
immigrationDate: member.created_at,
username: member.username,
xp: member.xp,
chatdefault: member.chatdefault,
};
}

Expand All @@ -212,6 +219,7 @@ export class MemberService {
xp: member.xp,
firstName: member.firstname,
lastName: member.lastname,
chatdefault: member.chatdefault,
last_daily_login_credit: member.last_daily_login_credit,
last_weekly_role_credit: member.last_weekly_role_credit,
};
Expand Down Expand Up @@ -381,17 +389,26 @@ export class MemberService {
private encryptPassword(password: string): Promise<string> {
return bcrypt.hash(password, MemberService.SALT_ROUNDS);
}

/**
* Updates a members first and last name
* Updates a members default chat choice firstname and lastname
* @param memberId id of the member
* @param firstName string of the first name
* @param lastName string of the last name
* @param chatdefault string of the chatdefault
* Must retain updateName here for first time home creation firstname/lastname addition
*/
public async updateName(memberId: number, firstName: string, lastName: string): Promise<void> {
await this.memberRepository.update(memberId, {
firstname: firstName,
lastname: lastName,
firstname: firstName,
lastname: lastName,
});
}
public async updateInfo(memberId: number, firstName: string, lastName: string, chatdefault: number): Promise<void> {
await this.memberRepository.update(memberId, {
firstname: firstName,
lastname: lastName,
chatdefault: chatdefault,
});
}

Expand Down
2 changes: 2 additions & 0 deletions api/src/types/models/member.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ export interface Member extends Model {
firstname: string;
/** the real last name */
lastname: string;
/** default chat choice */
chatdefault: number;
/** the role they wish to display in chat */
primary_role_id?: number;
/** this last time they received role based credits */
Expand Down
2 changes: 2 additions & 0 deletions api/src/types/views/member-info.view.interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ export interface MemberInfoView {
lastName?: string;
/**primary role id that the member wants displayed in chat**/
primary_role_id?: number;
/**add chatdefault */
chatdefault?: number;
}

export interface MemberAdminView {
Expand Down
3 changes: 1 addition & 2 deletions spa/src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
</div>
<div class="flex flex-row justify-center" v-if="$store.data.place.name">
<span class="inline" style="color:lime;">{{ $store.data.place.name }}</span>

</div>
<div class="flex flex-row justify-center">
<img src="/assets/img/b2dchat.gif" @click="$store.methods.setView3d(false)"
Expand Down Expand Up @@ -91,7 +92,6 @@
<br />
<router-link to="/logout" class="btn-ui">Logout</router-link>
<br />
<br />
<p align="center">
<a
href="https://kdaws.com/"
Expand Down Expand Up @@ -346,7 +346,6 @@ export default Vue.extend({
},
mounted() {
//todo populate jumpgate with worlds
X3D(
() => {
console.log("starting X3d");
Expand Down
5 changes: 5 additions & 0 deletions spa/src/appStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ export interface User {
token?: string;
admin?: boolean;
hasHome?: boolean;
chatdefault?: number;
firstname?: string;
}

export interface Place {
Expand Down Expand Up @@ -88,6 +90,9 @@ const appStore = Vue.observable<AppStore>({
userData.avatar.gestures = JSON.parse(userData.avatar.gestures);
}
appStore.data.user = { ...appStore.data.user, ...userData };
if (appStore.data.user.chatdefault === 1) {
appStore.data.view3d = true;
}
},
},
});
Expand Down
15 changes: 12 additions & 3 deletions spa/src/components/modals/PersonalInfoModal.vue
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,14 @@
</select>
</td>
</tr>
<tr>
<td><b>Default Chat</b></td>
<td><b>2D</b> <input type="radio" v-model="info.chatdefault" value="0">&nbsp;
<b>3D</b> <input type="radio" v-model="info.chatdefault" value="1">
</td>
</tr>
</table>
<center>Note: You must refresh/reload CTR after changing default chat value for it to take effect</center>
<div class="text-center flex-1">
<p>
<button class="btn" v-on:click="update">
Expand Down Expand Up @@ -88,11 +95,12 @@ export default Vue.extend({
info: {
username: undefined,
email: undefined,
firstName: undefined,
lastName: undefined,
firstName: undefined,
lastName: undefined,
immigrationDate: undefined,
walletBalance: undefined,
xp: undefined,
chatdefault: undefined,
primary_role_id: undefined,
},
roles: [],
Expand All @@ -109,9 +117,10 @@ export default Vue.extend({
this.$http.post("/member/update_role", {
primaryRoleId: this.selectedRoleId,
});
this.$http.post("/member/updatename", {
this.$http.post("/member/updateinfo", {
firstName: this.info.firstName,
lastName: this.info.lastName,
chatdefault: this.info.chatdefault,
});
this.error = null;
this.success = "Information Updated";
Expand Down

0 comments on commit a5c9d3a

Please sign in to comment.