add timebomb feature

This commit is contained in:
tiago.kayaya
2021-10-27 08:45:37 +01:00
parent 5c942e6e9b
commit ae9bc339c9
12 changed files with 153 additions and 27 deletions
+2 -1
View File
@@ -96,7 +96,8 @@
<div class="item-title" [class.item-title-active]="group._id ==idSelected">
<ion-label>{{group.name.split('-').join(' ')}}</ion-label>
</div>
<div class="item-date" [class.item-date-active]="group._id ==idSelected" *ngIf="group.lastMessage">{{showDateDuration(group._updatedAt)}}</div>
<div class="item-date" [class.item-date-active]="group._id ==idSelected" *ngIf="group.lastMessage && !group.customFields.countDownDate">{{showDateDuration(group._updatedAt)}}</div>
<div class="item-date" *ngIf="group.customFields.countDownDate">{{countDownDate(group.customFields.countDownDate, group._id)}}</div>
</div>
<div *ngIf="group.lastMessage" class="item-description d-flex align-items-center" [class.item-description-active]="group._id ==idSelected">
<div class="item-message">{{group.lastMessage.u.name}}: {{group.lastMessage.msg}} </div>
+2 -2
View File
@@ -98,7 +98,7 @@ ion-content{
margin-top: 10px;
}
.item-title{
width: calc(100% - 75px);
width: calc(100% - 80px);
float: left;
font-size: 15px;
color: #0d89d1;
@@ -107,7 +107,7 @@ ion-content{
color: #fff;
}
.item-date{
width: 75px;
width: 80px;
float: right;
font-size: 13px;
color: #797979;
+6 -2
View File
@@ -420,6 +420,10 @@ hideRefreshButton(){
return this.timeService.showDateDuration(start);
}
countDownDate(date:any, roomId:string){
return this.timeService.countDownDate(date, roomId);
}
async getChatMembers(){
//return await this.chatService.getMembers(roomId).toPromise();
this.chatService.getAllUsers().subscribe(res=> {
@@ -432,7 +436,7 @@ hideRefreshButton(){
async getGroups(event?){
this.result = this.chatService.getAllPrivateGroups().subscribe(async (res:any)=>{
console.log(res);
if(res.groups != 200){
this.privateGroups = res.groups;
@@ -444,7 +448,7 @@ hideRefreshButton(){
var dateB = new Date(b._updatedAt).getTime();
return dateB - dateA;
});
//console.log(this.allGroups);
console.log(this.allGroups);
/* }); */
if(this.route.url != "/home/chat"){
console.log("Timer message stop")
+7
View File
@@ -209,8 +209,12 @@ export class ChatService {
/* GROUPS */
addGroup(body:any){
console.log(body);
return this.http.post(environment.apiChatUrl+'groups.create', body, this.options);
}
setGroupCustomFields(body:any){
return this.http.post(environment.apiChatUrl+'groups.setCustomFields', body, this.options);
}
getGroupMembers(roomId:string){
let params = new HttpParams();
@@ -223,6 +227,7 @@ export class ChatService {
}
return this.http.get(url, opts);
}
getChannelMembers(roomId:string){
let params = new HttpParams();
let url=environment.apiChatUrl+'channels.members';
@@ -274,9 +279,11 @@ export class ChatService {
}
return this.http.post(environment.apiChatUrl+'channels.kick', body, opts);
}
deleteGroup(body:any){
return this.http.post(environment.apiChatUrl+'groups.delete', body, this.options);
}
deleteChannel(body:any){
return this.http.post(environment.apiChatUrl+'channels.delete', body, this.options);
}
+39 -1
View File
@@ -1,11 +1,14 @@
import { Injectable } from '@angular/core';
import { ChatService } from '../chat.service';
@Injectable({
providedIn: 'root'
})
export class TimeService {
countDownTime: any;
room: any;
constructor() { }
constructor(private chatService: ChatService) { }
showDateDuration(start:any){
let end;
@@ -13,6 +16,7 @@ export class TimeService {
start = new Date(start);
let customizedDate;
const totalSeconds = Math.floor((end - (start))/1000);;
const totalMinutes = Math.floor(totalSeconds/60);
const totalHours = Math.floor(totalMinutes/60);
@@ -37,6 +41,40 @@ export class TimeService {
}
}
countDownDate(date:any, roomId:string){
/* let timer = setInterval(() =>{ */
console.log('Show TIMER');
let difference = new Date(date).getTime() - new Date().getTime();
let c_day = Math.floor(difference/(1000*60*60*24));
let c_hours = Math.floor((difference % (1000*60*60*24)) / (1000*60*60));
let c_minutes = Math.floor((difference % (1000*60*60)) / (1000*60));
let c_seconds = Math.floor((difference % (1000*60)) / 1000);
this.countDownTime = c_day + " : " + c_hours + " : " + c_minutes + " : " + c_seconds ;
if(difference < 0){
//clearInterval(timer);
this.countDownTime = "Expired";
let body = { "roomId":roomId, }
this.chatService.getRoomInfo(roomId).subscribe(room=>{
this.room = room['room'];
if(this.room.t === 'p'){
this.chatService.deleteGroup(body).subscribe(res=>{
console.log(res);
});
}
else{
this.chatService.deleteChannel(body).subscribe(res=>{
console.log(res);
});
}
});
}
//})
return this.countDownTime;
}
addZero(i) {
if (i < 10) {
i = "0" + i;
@@ -21,6 +21,10 @@
</ion-label>
</div>
</div>
<div *ngIf="room.customFields.countDownDate" class="d-flex align-items-center yellow-orange pl-10">
<i class="far fa-clock font-15" ></i>
<ion-label class="font-15 pl-10" color="warning">{{countDownDate(room.customFields.countDownDate, room._id)}}</ion-label>
</div>
</div>
</ion-toolbar>
</ion-header>
@@ -237,9 +237,15 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
return this.timeService.showDateDuration(start);
}
countDownDate(date:any, roomId:string){
return this.timeService.countDownDate(date, roomId);
}
getRoomInfo(){
this.showLoader = true;
this.chatService.getRoomInfo(this.roomId).subscribe(room=>{
console.log(room);
this.room = room['room'];
if(this.room.name){
this.roomName = this.room.name.split('-').join(' ');
@@ -20,12 +20,13 @@
<div class="item-container">
<ion-input [(ngModel)]="groupName" placeholder="Título"></ion-input>
</div>
<div *ngIf="false" class="item-container-no-border">
<div *ngIf="true" class="item-container-no-border">
<ion-checkbox (ionChange)="_ionChange($event)" color="primary"></ion-checkbox>
<ion-label>Grupo Ultra-secreto</ion-label>
</div>
<div *ngIf="showDuration" class="container-div">
<!-- *ngIf="showDuration" -->
<div class="container-div">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-duration.svg"></ion-icon>
@@ -35,6 +36,11 @@
</div>
</div>
</div>
</div>
<ion-label>{{displayDuration}}</ion-label>
<br />
<ion-label>{{thedate}}</ion-label>
<br />
<ion-label>{{countDownTime}}</ion-label>
</div>
</ion-content>
+58 -15
View File
@@ -15,7 +15,10 @@ export class NewGroupPage implements OnInit {
showLoader: boolean;
displayDuration: any;
showDuration: boolean;
thedate:any;
_day:any;
selectedDuration = ['','',''];
countDownTime:any;
//groupName:string;
@Input() groupName:string;
@@ -27,8 +30,8 @@ export class NewGroupPage implements OnInit {
private modalController: ModalController,
private chatService: ChatService,
//private navParams: NavParams,
)
{
)
{
this.isGroupCreated = false;
//this.groupName = this.navParams.get('name');
}
@@ -37,21 +40,36 @@ export class NewGroupPage implements OnInit {
}
_ionChange(event){
console.log(event);
console.log(event.detail.checked);
this.showDuration = event.detail.checked;
//this.thedate = new Date(2021, 10, 1, 10, 33, 30, 0);
this.thedate = new Date();
}
close(){
//this.modalController.dismiss();
console.log('close');
this.addGroupMessage.emit();
}
createGroup(){
let name = this.groupName.split(' ').join('-');
let body = { "name":name, }
this.chatService.addGroup(body).subscribe(res=>{
console.log('group created');
console.log(res['group']);
this.addGroupMessage.emit(res['group']._id);
let countDownBody = {
"roomId": res['group']._id,
"customFields":{"countDownDate":this.thedate}
}
this.chatService.setGroupCustomFields(countDownBody).subscribe(res=>{
console.log(res);
});
});
}
@@ -60,14 +78,14 @@ export class NewGroupPage implements OnInit {
let name = this.groupName.split(' ').join('-');
console.log(name);
const modal = await this.modalController.create({
component: GroupContactsPage,
componentProps: {
isCreated:this.isGroupCreated,
name: name,
duration:'',
},
},
cssClass: 'contacts',
backdropDismiss: false
});
@@ -75,7 +93,7 @@ export class NewGroupPage implements OnInit {
await modal.present();
modal.onDidDismiss();
}
async setDuration(ev: any) {
const popover = await this.popoverController.create({
component: GroupDurationPage,
@@ -90,14 +108,37 @@ export class NewGroupPage implements OnInit {
const picker = await this.pickerController.create({
cssClass: '',
buttons: [
{
{
text: 'Cancelar', role: 'cancel', cssClass: 'btn-cancel'
},
{
text: 'Ok',
{
text: 'Ok',
cssClass: 'btn-cancel',
handler:(value:any)=>{
console.log('button done pressed');
console.log(value);
let now = new Date();
this.thedate = new Date(now.getFullYear(), now.getMonth(), now.getDate() + value.days.value, now.getHours() + value.hours.value, now.getMinutes() + value.minutes.value, now.getSeconds(), now.getMilliseconds());
/* let timer = setInterval(() =>{
console.log('Show TIMER');
let difference = this.thedate.getTime() - new Date().getTime();
this._day = Math.floor(difference/(1000*60*60*24));
let c_day = Math.floor(difference/(1000*60*60*24));
let c_hours = Math.floor((difference % (1000*60*60*24)) / (1000*60*60));
let c_minutes = Math.floor((difference % (1000*60*60)) / (1000*60));
let c_seconds = Math.floor((difference % (1000*60)) / 1000);
this.countDownTime = c_day + ":" + c_hours + ":" + c_minutes + ":" + c_seconds ;
if(difference < 0){
clearInterval(timer);
this.countDownTime = "Expired";
}
}) */
this.selectedDuration = [
value.days.value,
value.hours.value,
@@ -108,24 +149,24 @@ export class NewGroupPage implements OnInit {
if(value.days.value > 0){
if(value.days.value == 1){
if(value.hours.value == 1){
this.displayDuration = value.days.value + " day " +
this.displayDuration = value.days.value + " day " +
value.hours.value + " hora " +
value.minutes.value + " minutos";
}
else{
this.displayDuration = value.days.value + " days " +
this.displayDuration = value.days.value + " days " +
value.hours.value + " horas " +
value.minutes.value + " minutos";
}
}
else{
if(value.hours.value == 1){
this.displayDuration = value.days.value + " days " +
this.displayDuration = value.days.value + " days " +
value.hours.value + " hora " +
value.minutes.value + " minutos";
}
else{
this.displayDuration = value.days.value + " days " +
this.displayDuration = value.days.value + " days " +
value.hours.value + " horas " +
value.minutes.value + " minutos";
}
@@ -141,7 +182,7 @@ export class NewGroupPage implements OnInit {
value.minutes.value + " minutos";
}
}
}
}
},
},
],
@@ -155,6 +196,8 @@ export class NewGroupPage implements OnInit {
{ text: '2', value: 2 },
{ text: '3', value: 3 },
{ text: '4', value: 4 },
{ text: '5', value: 5 },
{ text: '6', value: 6 },
]
},
{
@@ -195,7 +238,7 @@ export class NewGroupPage implements OnInit {
await picker.present();
picker.onDidDismiss().then(async data =>{
let day = await picker.getColumn('days');
let hour = await picker.getColumn('hours');
let hour = await picker.getColumn('hours');
let minutes = await picker.getColumn('minutes');
});