Version 1.6.5: Optimizations für responsive userlist

This commit is contained in:
Mal 2021-03-27 22:29:58 +01:00
parent 5efa9d7cfd
commit 9164f3e9f9
7 changed files with 77 additions and 27 deletions

View File

@ -1,8 +1,8 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<widget id="io.ionic.starter" version="1.6.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <widget id="io.ionic.starter" version="1.6.5" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>METAsocket</name> <name>METAsocket</name>
<description>WowApp's awesome instant messenger for the whole Greifentanzgeschwader</description> <description>WowApp's awesome instant messenger for the whole Greifentanzgeschwader</description>
<author email="webmaster@sabolli.de" href="https://sabolli.de/metasocket/">sabolli</author> <author email="webmaster@sabolli.de" href="https://sabolli.de/wow/metasocket/">sabolli</author>
<content src="index.html" /> <content src="index.html" />
<access origin="*" /> <access origin="*" />
<allow-intent href="http://*/*" /> <allow-intent href="http://*/*" />

View File

@ -1,4 +1,4 @@
export default class AppConfig export default class AppConfig
{ {
public static readonly VERSION: string = '1.6.0'; public static readonly VERSION: string = '1.6.5';
} }

View File

@ -20,6 +20,8 @@
</div> </div>
</div> </div>
<div #sidebarBackground id="sidebar-background" (click)="pushAwaySidebar()"></div>
<div #sidebar id="sidebar" (touchmove)="onSidebarTouch($event)" (touchend)="onTouchEnd()"> <div #sidebar id="sidebar" (touchmove)="onSidebarTouch($event)" (touchend)="onTouchEnd()">
<div id="userlist"> <div id="userlist">
<div *ngFor="let user of userList" class="user"> <div *ngFor="let user of userList" class="user">

View File

@ -36,6 +36,7 @@ export class ChatComponent implements OnInit, AfterViewInit, AfterViewChecked, W
@ViewChild('chat') chat: ElementRef; @ViewChild('chat') chat: ElementRef;
@ViewChild('sidebar') sidebar: ElementRef; @ViewChild('sidebar') sidebar: ElementRef;
@ViewChild('sidebarBackground') sidebarBackground: ElementRef;
@ViewChild('chatPostArea') chatPostArea: ElementRef; @ViewChild('chatPostArea') chatPostArea: ElementRef;
@ViewChild('errorMessage') errorMessage: ElementRef; @ViewChild('errorMessage') errorMessage: ElementRef;
@ViewChild('chatTextArea') chatTextArea: ElementRef; @ViewChild('chatTextArea') chatTextArea: ElementRef;
@ -64,6 +65,7 @@ export class ChatComponent implements OnInit, AfterViewInit, AfterViewChecked, W
this.url = Setting.URL; this.url = Setting.URL;
this.websocketService.setListener(this); this.websocketService.setListener(this);
this.websocketService.initializeSocket(AppStorage.getChatToken()); this.websocketService.initializeSocket(AppStorage.getChatToken());
this.backgroundMode.setDefaults({silent: true});
this.backgroundMode.enable(); this.backgroundMode.enable();
this.backgroundMode.disableBatteryOptimizations(); this.backgroundMode.disableBatteryOptimizations();
this.backgroundMode.disableWebViewOptimizations(); this.backgroundMode.disableWebViewOptimizations();
@ -253,8 +255,8 @@ export class ChatComponent implements OnInit, AfterViewInit, AfterViewChecked, W
if (this.getTouchEvent(event) === -1) { if (this.getTouchEvent(event) === -1) {
event.preventDefault(); event.preventDefault();
this.chat.nativeElement.id = 'chat-swiped-out';
this.sidebar.nativeElement.id = 'sidebar-swiped-in'; this.sidebar.nativeElement.id = 'sidebar-swiped-in';
this.sidebarBackground.nativeElement.id = 'sidebar-background-visible';
this.isSwiping = true; this.isSwiping = true;
@ -274,24 +276,10 @@ export class ChatComponent implements OnInit, AfterViewInit, AfterViewChecked, W
} }
if (this.getTouchEvent(event) === 1) { if (this.getTouchEvent(event) === 1) {
this.chat.nativeElement.id = 'chat-swiped-in'; this.pushAwaySidebar();
this.sidebar.nativeElement.id = 'sidebar-swiped-out';
this.isSwiping = true;
setTimeout(
() => {
this.isSwiping = false;
},
500
);
} }
} }
onTouchStart(event: TouchEvent): void
{
}
onTouchEnd(): void onTouchEnd(): void
{ {
this.lastTouchX = null; this.lastTouchX = null;
@ -415,6 +403,13 @@ export class ChatComponent implements OnInit, AfterViewInit, AfterViewChecked, W
} }
} }
); );
setTimeout(
() => {
this.checkVersion();
},
1000 * 60 * 60 * 24
);
} }
private getTouchEvent(event: TouchEvent): number private getTouchEvent(event: TouchEvent): number
@ -531,6 +526,23 @@ export class ChatComponent implements OnInit, AfterViewInit, AfterViewChecked, W
this.buttonSend.nativeElement.disabled = true; this.buttonSend.nativeElement.disabled = true;
} }
pushAwaySidebar(): void
{
this.sidebar.nativeElement.id = 'sidebar-swiped-out';
this.sidebarBackground.nativeElement.classList.add('sidebar-fadeout');
this.isSwiping = true;
setTimeout(
() => {
this.isSwiping = false;
this.sidebarBackground.nativeElement.classList.remove('sidebar-fadeout');
this.sidebarBackground.nativeElement.id = 'sidebar-background';
},
500
);
}
private sortUserList(): void private sortUserList(): void
{ {
this.userList.sort( this.userList.sort(

View File

@ -6,7 +6,7 @@
<form> <form>
<label> <label>
Username Username
<input #loginName name="username" [(ngModel)] = "username" required autofocus> <input #loginName name="username" [(ngModel)] = "username" (click)="selectUsername()" required autofocus>
</label> </label>
<label> <label>

View File

@ -99,4 +99,10 @@ export class LoginComponent implements OnInit {
} }
); );
} }
selectUsername(): void
{
this.usernameElement.nativeElement.selectionStart = 0;
this.usernameElement.nativeElement.selectionEnd = this.username.length;
}
} }

View File

@ -8,6 +8,11 @@
to { background-color: rgba(0, 0, 0, 0.5) } to { background-color: rgba(0, 0, 0, 0.5) }
} }
@keyframes sidebar-background-exit {
from { background-color: rgba(0, 0, 0, 0.5) }
to { background-color: rgba(0, 0, 0, 0) }
}
@keyframes chat-swipe-in { @keyframes chat-swipe-in {
from {left: -100%} from {left: -100%}
to {left: 0} to {left: 0}
@ -19,13 +24,13 @@
} }
@keyframes sidebar-swipe-in { @keyframes sidebar-swipe-in {
from {left: 100%} from {right: -350px}
to {left: 0} to {right: 0}
} }
@keyframes sidebar-swipe-out { @keyframes sidebar-swipe-out {
from {left: 0} from {right: 0}
to {left: 100%} to {right: -350px}
} }
@keyframes fullscreen-notification-window-entrance { @keyframes fullscreen-notification-window-entrance {
@ -367,6 +372,10 @@ a.notification-button {
padding: 20px; padding: 20px;
} }
#sidebar-background {
display: none;
}
#userlist { #userlist {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -404,14 +413,15 @@ a.notification-button {
@media only screen and (max-width: 800px) { @media only screen and (max-width: 800px) {
#sidebar, #sidebar-swiped-in, #sidebar-swiped-out { #sidebar, #sidebar-swiped-in, #sidebar-swiped-out {
width: 100%; max-width: 100%;
height: 100%; height: 100%;
left: 100%; right: -350px;
animation-duration: 0.5s; animation-duration: 0.5s;
box-shadow: 0 0 20px black;
} }
#sidebar-swiped-in { #sidebar-swiped-in {
left: 0; right: 0;
animation-name: sidebar-swipe-in; animation-name: sidebar-swipe-in;
} }
@ -419,6 +429,26 @@ a.notification-button {
animation-name: sidebar-swipe-out animation-name: sidebar-swipe-out
} }
#sidebar-background, #sidebar-background-visible {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.5);
}
#sidebar-background-visible {
display: block;
animation-name: fullscreen-notification-entrance;
animation-duration: 0.5s;
}
.sidebar-fadeout {
animation-name: sidebar-background-exit !important;
animation-duration: 0.5s;
}
#chat, #chat-swiped-in, #chat-swiped-out { #chat, #chat-swiped-in, #chat-swiped-out {
width: 100%; width: 100%;
top: 0; top: 0;