Skip to content

Commit a604dee

Browse files
committed
feat(maimai2): user can create their circle
1 parent a1caaba commit a604dee

File tree

2 files changed

+93
-2
lines changed

2 files changed

+93
-2
lines changed

src/app/sega/maimai2/maimai2-circle/maimai2-circle.component.html

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ <h1 class="page-heading">{{ "Maimai2.CirclePage.Title" | translate }}</h1>
22

33
<h3 class="page-heading">已加入的Circle信息</h3>
44
<div class="alert alert-info" *ngIf="!userCircleInfo?.joinedCircle">
5-
你目前还没有加入任何Circle
5+
你目前还没有加入任何Circle, 或者你可以新建Circle
66
</div>
77
<div *ngIf="userCircleInfo?.joinedCircle">
88
<div class="card mb-4">
@@ -289,7 +289,69 @@ <h5 class="page-heading mt-5">申请加入Circle列表</h5>
289289
</div>
290290
</div>
291291

292+
<ng-template #content let-modal>
293+
<div class="modal-header">
294+
<h4 class="modal-title" id="modal-basic-title">新建Circle</h4>
295+
<button
296+
type="button"
297+
class="btn-close"
298+
aria-label="Close"
299+
(click)="modal.dismiss('Cross click')"
300+
></button>
301+
</div>
302+
303+
<div class="modal-body">
304+
<label for="userInput" class="form-label">Circle名称:</label>
305+
<input
306+
id="userInput"
307+
type="text"
308+
class="form-control"
309+
[(ngModel)]="createUserCircle.circleName"
310+
/>
311+
<label for="userInput" class="form-label mt-2">Comment:</label>
312+
<textarea
313+
id="userInput"
314+
type="text"
315+
rows="5"
316+
class="form-control multi-line-ellipsis"
317+
[(ngModel)]="createUserCircle.comment"
318+
></textarea>
319+
<div class="form-check mt-2">
320+
<input
321+
class="form-check-input"
322+
type="checkbox"
323+
[(ngModel)]="createUserCircle.isPublic"
324+
id="checkDefault"
325+
/>
326+
<label class="form-check-label" for="checkDefault"> 是否公开 </label>
327+
</div>
328+
</div>
329+
330+
<div class="modal-footer">
331+
<button
332+
type="button"
333+
class="btn btn-secondary"
334+
(click)="modal.close('cancel')"
335+
>
336+
取消
337+
</button>
338+
<button
339+
type="button"
340+
class="btn btn-success"
341+
(click)="createCircle(); modal.close('ok')"
342+
>
343+
提交
344+
</button>
345+
</div>
346+
</ng-template>
347+
292348
<h3 class="page-heading mt-4">公开的用户Circle列表</h3>
349+
<button
350+
class="btn-sm btn btn-primary mb-4"
351+
(click)="openCreateCircleDialog(content)"
352+
>
353+
新建Circle
354+
</button>
293355
<div class="mb-4" *ngIf="publicUserCircleListTotalCount > 0">
294356
<div class="row">
295357
<div *ngFor="let circle of publicUserCircleList" class="col-md-6 mb-3">

src/app/sega/maimai2/maimai2-circle/maimai2-circle.component.ts

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { NgxIndexedDBService } from 'ngx-indexed-db';
66
import { environment } from '../../../../environments/environment';
77
import { catchError, map, tap } from 'rxjs/operators';
88
import { Observable, of } from 'rxjs';
9-
import { NgbOffcanvas } from '@ng-bootstrap/ng-bootstrap';
9+
import { NgbModal, NgbOffcanvas } from '@ng-bootstrap/ng-bootstrap';
1010
import { UserService } from 'src/app/user.service';
1111
import { Maimai2Circle } from '../model/Maimai2Circle';
1212
import { Page } from 'src/app/model/Page';
@@ -30,6 +30,7 @@ export class Maimai2CircleComponent implements OnInit {
3030
private api: ApiService,
3131
private userService: UserService,
3232
private messageService: MessageService,
33+
private modalService: NgbModal,
3334
protected clipboard: Clipboard
3435
) {
3536
}
@@ -57,6 +58,8 @@ export class Maimai2CircleComponent implements OnInit {
5758

5859
pageSize: number = 10
5960

61+
createUserCircle: Maimai2Circle;
62+
6063
ngOnInit() {
6164
this.aimeId = String(this.userService.currentUser.defaultCard.extId);
6265
this.load();
@@ -297,6 +300,32 @@ export class Maimai2CircleComponent implements OnInit {
297300
);
298301
}
299302

303+
openCreateCircleDialog(content: any) {
304+
if (!this.createUserCircle)
305+
this.createUserCircle = {} as any;
306+
this.modalService.open(content, { ariaLabelledBy: 'modal-basic-title' });
307+
}
308+
309+
createCircle() {
310+
const param = new HttpParams().set('aimeId', this.aimeId);
311+
this.api.post('api/game/maimai2/createCircle', this.createUserCircle, param).pipe().subscribe(
312+
(data: ApiResponse<boolean>) => {
313+
if (data.data) {
314+
this.messageService.toastService.show("新建Circle成功");
315+
this.loadUserCircleInfo(); // refresh
316+
}
317+
else
318+
this.messageService.toastService.show("新建Circle失败");
319+
}
320+
,
321+
(error: string) => {
322+
this.messageService.notice(error);
323+
console.error(`createCircle() failed, error = ${error}`);
324+
return of({ data: [], error: true });
325+
}
326+
);
327+
}
328+
300329
exitCircle() {
301330
const param = new HttpParams().set('aimeId', this.aimeId);
302331
this.api.post('api/game/maimai2/exitCircle', param).pipe().subscribe(

0 commit comments

Comments
 (0)