This commit is contained in:
leejinho 2020-02-05 17:50:02 +09:00
commit 4d0c8550e9
17 changed files with 139 additions and 67 deletions

View File

@ -47,7 +47,11 @@ import {
} from '@ucap-webmessenger/native'; } from '@ucap-webmessenger/native';
import { ElectronAppChannel } from '@ucap-webmessenger/electron-core'; import { ElectronAppChannel } from '@ucap-webmessenger/electron-core';
import { autoUpdater, CancellationToken } from 'electron-updater'; import {
autoUpdater,
CancellationToken,
UpdateCheckResult
} from 'electron-updater';
import log from 'electron-log'; import log from 'electron-log';
import { RendererUpdater } from './lib/renderer-updater'; import { RendererUpdater } from './lib/renderer-updater';
@ -124,6 +128,7 @@ let rendererUpdater: RendererUpdater | undefined;
log.transports.file.level = 'debug'; log.transports.file.level = 'debug';
let autoUpdaterCancellationToken: CancellationToken; let autoUpdaterCancellationToken: CancellationToken;
let updateCheckResult: UpdateCheckResult;
autoUpdater.autoDownload = false; autoUpdater.autoDownload = false;
autoUpdater.logger = log; autoUpdater.logger = log;
@ -299,6 +304,8 @@ app.on(ElectronAppChannel.Ready, () => {
}, },
onDenyUpdate: () => { onDenyUpdate: () => {
log.info('OnDenyUpdate'); log.info('OnDenyUpdate');
updateCheckResult.cancellationToken.cancel();
updateWindowService.close(); updateWindowService.close();
}, },
onCancelDownload: () => { onCancelDownload: () => {
@ -353,20 +360,19 @@ function onDidLoad(fn: OnDidLoadFn) {
} }
ipcMain.on(UpdaterChannel.Apply, (event: IpcMainEvent, ...args: any[]) => { ipcMain.on(UpdaterChannel.Apply, (event: IpcMainEvent, ...args: any[]) => {
// if (__DEV__) { if (!autoUpdater.isUpdaterActive()) {
// event.returnValue = false; log.info('autoUpdater is not active');
// return; return;
// } }
const ver = args[0]; const ver = args[0];
if (semver.lt(app.getVersion(), ver)) { if (semver.lt(app.getVersion(), ver)) {
autoUpdater updateCheckResult = undefined;
.checkForUpdatesAndNotify() autoUpdater.checkForUpdatesAndNotify().then(r => {
.then(result => {}) log.debug('checkForUpdatesAndNotify.then');
.catch(reason => { updateCheckResult = r;
log.error(reason); });
});
} }
}); });
@ -770,6 +776,8 @@ autoUpdater.on('update-not-available', info => {
log.info('Update not available.'); log.info('Update not available.');
}); });
autoUpdater.on('error', err => { autoUpdater.on('error', err => {
updateWindowService.close();
log.info('Error in auto-updater. ' + err); log.info('Error in auto-updater. ' + err);
}); });
autoUpdater.on('download-progress', progressObj => { autoUpdater.on('download-progress', progressObj => {

View File

@ -1,6 +1,6 @@
{ {
"name": "ucap-webmessenger", "name": "ucap-webmessenger",
"version": "0.0.14", "version": "0.0.15",
"author": { "author": {
"name": "LG CNS", "name": "LG CNS",
"email": "lgucap@lgcns.com" "email": "lgucap@lgcns.com"

View File

@ -174,11 +174,19 @@
} }
} }
::ng-deep .chat-snackbar-class { ::ng-deep .cdk-global-overlay-wrapper {
.mat-simple-snackbar { .mat-snack-bar-container {
justify-content: center; margin: 0;
span { padding: 30px;
@include ellipsis(1); .mat-simple-snackbar {
justify-content: center;
span {
@include ellipsis(1);
padding: 10px 40px;
border: 1px solid #ffffff;
background-color: rgb(255, 255, 255, 0.2);
color: #ffffff;
}
} }
} }
} }

View File

@ -970,13 +970,13 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewInit {
} }
if (result.canceled) { if (result.canceled) {
this.snackBarService.open( // this.snackBarService.open(
this.translateService.instant('common.file.results.canceled'), // this.translateService.instant('common.file.results.canceled'),
this.translateService.instant('common.file.errors.label'), // this.translateService.instant('common.file.errors.label'),
{ // {
duration: 1000 // duration: 1000
} // }
); // );
} else { } else {
this.saveFile(value, result.filePath); this.saveFile(value, result.filePath);
} }

View File

@ -66,10 +66,19 @@
<video <video
controls controls
controlsList="nodownload nofullscreen" controlsList="nodownload nofullscreen"
*ngIf="selectedFile.info.type === FileType.Video"
[src]="getImageUrl(selectedFile)"
class="preview-video" class="preview-video"
#videoPlayer
*ngIf="selectedFile.info.type === FileType.Video && playable"
[src]="getImageUrl(selectedFile)"
(loadeddata)="onLoadedDataVideo()"
></video> ></video>
<div
*ngIf="selectedFile.info.type === FileType.Video && !playable"
fxFlexFill
class="guide-msg"
>
{{ 'common.file.errors.cantPlay' | translate }}
</div>
</div> </div>
<ul> <ul>
<li class="name">{{ selectedFile.info.name }}</li> <li class="name">{{ selectedFile.info.name }}</li>

View File

@ -1,4 +1,11 @@
import { Component, OnInit, OnDestroy, Inject } from '@angular/core'; import {
Component,
OnInit,
OnDestroy,
Inject,
ElementRef,
ViewChild
} from '@angular/core';
import { import {
FileInfo, FileInfo,
FileDownloadInfo, FileDownloadInfo,
@ -45,6 +52,9 @@ export interface FileInfoTotal {
styleUrls: ['./album-box.component.scss'] styleUrls: ['./album-box.component.scss']
}) })
export class AlbumBoxComponent implements OnInit, OnDestroy { export class AlbumBoxComponent implements OnInit, OnDestroy {
@ViewChild('videoPlayer', { static: false })
videoPlayer: ElementRef<HTMLVideoElement>;
filteredList: FileInfoTotal[] = []; filteredList: FileInfoTotal[] = [];
fileInfoTotal: FileInfoTotal[]; fileInfoTotal: FileInfoTotal[];
fileInfoList: FileInfo[]; fileInfoList: FileInfo[];
@ -62,6 +72,8 @@ export class AlbumBoxComponent implements OnInit, OnDestroy {
thumbBaseUrl: string; thumbBaseUrl: string;
playable = true;
constructor( constructor(
private store: Store<any>, private store: Store<any>,
private sessionStorageService: SessionStorageService, private sessionStorageService: SessionStorageService,
@ -186,6 +198,7 @@ export class AlbumBoxComponent implements OnInit, OnDestroy {
event.stopPropagation(); event.stopPropagation();
} }
this.playable = true;
this.selectedFile = fileInfo; this.selectedFile = fileInfo;
} }
@ -323,4 +336,13 @@ export class AlbumBoxComponent implements OnInit, OnDestroy {
this.logger.error(reason); this.logger.error(reason);
}); });
} }
onLoadedDataVideo(): void {
if (
0 === this.videoPlayer.nativeElement.videoWidth ||
0 === this.videoPlayer.nativeElement.videoHeight
) {
this.playable = false;
}
}
} }

View File

@ -5,8 +5,10 @@
<div class="app-layout-native-title-bar-title">DS Talk</div> <div class="app-layout-native-title-bar-title">DS Talk</div>
<div class="btn-area"> <div class="btn-area">
<ucap-integrated-search-form <ucap-integrated-search-form
*ngIf="!!loginRes" *ngIf="!!loginRes"
(search)="onIntegratedSearch($event)" class="input-lineless integrated-search"> (search)="onIntegratedSearch($event)"
class="input-lineless integrated-search"
>
</ucap-integrated-search-form> </ucap-integrated-search-form>
<div <div
*ngIf="!!loginRes && !!weblink" *ngIf="!!loginRes && !!weblink"
@ -160,6 +162,7 @@
*ngIf="!!loginRes" *ngIf="!!loginRes"
class="myprofile-item" class="myprofile-item"
[matMenuTriggerFor]="profileMenu" [matMenuTriggerFor]="profileMenu"
#profileMenuTrigger="matMenuTrigger"
></ucap-profile-my-profile-widget> ></ucap-profile-my-profile-widget>
<div class="app-layout-native-title-bar-actions"> <div class="app-layout-native-title-bar-actions">
@ -498,7 +501,7 @@
</span> </span>
<span class="version-info-button"> <span class="version-info-button">
<button <button
*ngIf="checkingUpdateIsExist"
mat-flat-button mat-flat-button
class="mat-primary" class="mat-primary"
(click)="onClickApplyUpdate($event)" (click)="onClickApplyUpdate($event)"

View File

@ -63,7 +63,7 @@ import {
} from '@app/layouts/messenger/dialogs/profile/profile.dialog.component'; } from '@app/layouts/messenger/dialogs/profile/profile.dialog.component';
import { DialogService } from '@ucap-webmessenger/ui'; import { DialogService } from '@ucap-webmessenger/ui';
import { DOCUMENT } from '@angular/common'; import { DOCUMENT } from '@angular/common';
import { MatMenu, MatRadioChange } from '@angular/material'; import { MatMenu, MatRadioChange, MatMenuTrigger } from '@angular/material';
import { StatusCode, StatusType } from '@ucap-webmessenger/core'; import { StatusCode, StatusType } from '@ucap-webmessenger/core';
import { import {
StatusInfo, StatusInfo,
@ -119,6 +119,9 @@ export class TopBarComponent implements OnInit, OnDestroy {
readonly awayTimeList = [10, 20, 30]; readonly awayTimeList = [10, 20, 30];
@ViewChild('profileMenuTrigger', { static: false })
profileMenuTrigger: MatMenuTrigger;
@ViewChild('profileMenu', { static: true }) @ViewChild('profileMenu', { static: true })
profileMenu: MatMenu; profileMenu: MatMenu;
@ -558,7 +561,10 @@ export class TopBarComponent implements OnInit, OnDestroy {
} }
onClickApplyUpdate(event: Event) { onClickApplyUpdate(event: Event) {
this.nativeService.checkForUpdates(this.checkingUpdateAppVersion); // this.profileMenuTrigger.closeMenu();
setTimeout(() => {
this.nativeService.checkForUpdates(this.checkingUpdateAppVersion);
}, 1000);
} }
onIntegratedSearch(keyword: string) { onIntegratedSearch(keyword: string) {

View File

@ -433,6 +433,7 @@
"failToSpecifyPath": "Specifing of save path failed.", "failToSpecifyPath": "Specifing of save path failed.",
"expired": "This file has expired", "expired": "This file has expired",
"noPreview": "This file does not support preview.", "noPreview": "This file does not support preview.",
"cantPlay": "This file does not support playing.",
"notSupporedType": "File format is not supported.", "notSupporedType": "File format is not supported.",
"oversize": "You cannot upload files larger than {{size}} megabytes." "oversize": "You cannot upload files larger than {{size}} megabytes."
} }

View File

@ -433,6 +433,7 @@
"failToSpecifyPath": "저장경로 지정에 실패하였습니다.", "failToSpecifyPath": "저장경로 지정에 실패하였습니다.",
"expired": "기간이 만료된 파일입니다", "expired": "기간이 만료된 파일입니다",
"noPreview": "미리보기를 지원하지 않는 파일입니다.", "noPreview": "미리보기를 지원하지 않는 파일입니다.",
"cantPlay": "재생을 지원하지 않는 파일입니다.",
"notSupporedType": "지원하지 않는 파일형식입니다.", "notSupporedType": "지원하지 않는 파일형식입니다.",
"oversize": "{{maxSize}}MB 이상 파일을 업로드 할 수 없습니다." "oversize": "{{maxSize}}MB 이상 파일을 업로드 할 수 없습니다."
} }

View File

@ -275,15 +275,6 @@ $daesang-grey: (
cursor: pointer; cursor: pointer;
} }
//snackbar
.cdk-global-overlay-wrapper {
align-items: center !important;
justify-content: center !important;
.mat-simple-snackbar {
justify-content: center;
}
}
.policy { .policy {
color: mat-color($accent, B100); color: mat-color($accent, B100);
} }
@ -452,8 +443,8 @@ $daesang-grey: (
.mat-calendar-body-selected { .mat-calendar-body-selected {
background-color: mat-color($accent); background-color: mat-color($accent);
} }
.list-item{ .list-item {
&.selected{ &.selected {
background-color: mat-color($accent, 100); background-color: mat-color($accent, 100);
} }
} }

View File

@ -1,7 +1,8 @@
import { Component, OnInit, Input } from '@angular/core'; import { Component, OnInit, Input, ViewChild } from '@angular/core';
import { NGXLogger } from 'ngx-logger'; import { NGXLogger } from 'ngx-logger';
import { StatusBulkInfo, StatusInfo } from '@ucap-webmessenger/protocol-status'; import { StatusBulkInfo, StatusInfo } from '@ucap-webmessenger/protocol-status';
import { StatusCode, PresenceType } from '@ucap-webmessenger/core'; import { StatusCode, PresenceType } from '@ucap-webmessenger/core';
import { MatMenu, MatMenuTrigger } from '@angular/material';
@Component({ @Component({
selector: 'ucap-profile-my-profile-widget', selector: 'ucap-profile-my-profile-widget',

View File

@ -3,6 +3,8 @@
*/ */
export * from './lib/components/list-item.component'; export * from './lib/components/list-item.component';
export * from './lib/components/my-profile-widget.component';
export * from './lib/components/profile.component';
export * from './lib/components/user-list-item.component'; export * from './lib/components/user-list-item.component';
export * from './lib/ucap-ui-profile.module'; export * from './lib/ucap-ui-profile.module';

View File

@ -7,7 +7,7 @@
height: 60px; height: 60px;
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.6); box-shadow: 0 3px 6px rgba(0, 0, 0, 0.6);
background-color: #333333; background-color: #333333;
color:#ffffff; color: #ffffff;
.ucap-binary-viewer-icon { .ucap-binary-viewer-icon {
margin-right: 10px; margin-right: 10px;
@ -40,25 +40,25 @@
width: 100%; width: 100%;
height: calc(100% - 60px); height: calc(100% - 60px);
.ucap-image-viewer-image-wrapper { .ucap-image-viewer-image-wrapper {
height: 100%; height: 100%;
padding: 20px; padding: 20px;
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(0, 0, 0, 0.9);
} }
.circle-box{ .circle-box {
display:flex; display: flex;
width:140px; width: 140px;
height:140px; height: 140px;
border-radius:50%; border-radius: 50%;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
border:2px solid #ffffff; border: 2px solid #ffffff;
background-color:rgba(256, 256, 256, 0.7); background-color: rgba(256, 256, 256, 0.7);
} }
.guide-msg{ .guide-msg {
font-size:16px; font-size: 16px;
margin:30px; margin: 30px;
color:#ffffff; color: #ffffff;
} }
} }
} }

View File

@ -93,6 +93,7 @@
fxLayoutAlign="center center" fxLayoutAlign="center center"
> >
<video <video
*ngIf="playable"
#audioPlayer #audioPlayer
[src]="fileDownloadUrl" [src]="fileDownloadUrl"
[style.width]="'auto'" [style.width]="'auto'"
@ -109,6 +110,9 @@
(loadstart)="onLoadStartVideo()" (loadstart)="onLoadStartVideo()"
(loadeddata)="onLoadedDataVideo()" (loadeddata)="onLoadedDataVideo()"
></video> ></video>
<div *ngIf="!playable" class="guide-msg">
{{ 'common.file.errors.cantPlay' | translate }}
</div>
</div> </div>
<div class="viewer-bottom"> <div class="viewer-bottom">
<div <div
@ -142,6 +146,7 @@
(playing ? 'common.player.stop' : 'common.player.play') | translate (playing ? 'common.player.stop' : 'common.player.play') | translate
}}" }}"
aria-label="" aria-label=""
[disabled]="!playable"
(click)="onClickPlayOrPause()" (click)="onClickPlayOrPause()"
> >
<mat-icon>{{ playing ? 'pause' : 'play_arrow' }}</mat-icon> <mat-icon>{{ playing ? 'pause' : 'play_arrow' }}</mat-icon>

View File

@ -13,7 +13,7 @@
} }
.ucap-video-viewer-title { .ucap-video-viewer-title {
font-size:16px; font-size: 16px;
} }
.stroke-bar { .stroke-bar {
width: 1px; width: 1px;
@ -35,11 +35,17 @@
.ucap-video-viewer-video-icon { .ucap-video-viewer-video-icon {
width: 100%; width: 100%;
height: calc(100% - 80px); height: calc(100% - 80px);
.guide-msg {
font-size: 16px;
margin: 30px;
color: #ffffff;
}
} }
.viewer-bottom{ .viewer-bottom {
background-color: #212121; background-color: #212121;
color:#ffffff; color: #ffffff;
.ucap-video-viewer-video-time { .ucap-video-viewer-video-time {
width: 100%; width: 100%;
height: 30px; height: 30px;
@ -62,11 +68,11 @@
flex: 1 1 auto; flex: 1 1 auto;
} }
.ucap-video-viewer-action { .ucap-video-viewer-action {
.mat-icon{ .mat-icon {
font-size: 40px; font-size: 40px;
width: 100%; width: 100%;
height: 100%; height: 100%;
line-height:40px; line-height: 40px;
} }
} }
} }
@ -75,9 +81,11 @@ mat-slider {
width: 94%; width: 94%;
} }
::ng-deep .mat-slider-horizontal .mat-slider-track-background{ ::ng-deep .mat-slider-horizontal .mat-slider-track-background {
background-color: #999999 !important; background-color: #999999 !important;
} }
::ng-deep .mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb{ ::ng-deep
.mat-slider-min-value:not(.mat-slider-thumb-label-showing)
.mat-slider-thumb {
border-color: #999999 !important; border-color: #999999 !important;
} }

View File

@ -33,7 +33,7 @@ export class VideoViewerComponent implements OnInit {
@Output() @Output()
closed = new EventEmitter<void>(); closed = new EventEmitter<void>();
@ViewChild('audioPlayer', { static: true }) @ViewChild('audioPlayer', { static: false })
audioPlayer: ElementRef<HTMLVideoElement>; audioPlayer: ElementRef<HTMLVideoElement>;
@ViewChild('timeSlider', { static: true }) @ViewChild('timeSlider', { static: true })
@ -49,6 +49,8 @@ export class VideoViewerComponent implements OnInit {
videoWidth = 0; videoWidth = 0;
videoHeight = 0; videoHeight = 0;
playable = true;
Math = Math; Math = Math;
constructor( constructor(
@ -101,6 +103,11 @@ export class VideoViewerComponent implements OnInit {
this.videoWidth = this.audioPlayer.nativeElement.videoWidth; this.videoWidth = this.audioPlayer.nativeElement.videoWidth;
this.videoHeight = this.audioPlayer.nativeElement.videoHeight; this.videoHeight = this.audioPlayer.nativeElement.videoHeight;
if (0 === this.videoHeight || 0 === this.videoWidth) {
this.playable = false;
this.duration = 0;
}
} }
onClickDownload(): void { onClickDownload(): void {