Skip to content

Commit

Permalink
Merge pull request #43 from dotMortis/mappers
Browse files Browse the repository at this point in the history
Mappers!
  • Loading branch information
dotMortis authored Oct 2, 2021
2 parents 0207223 + 024c044 commit 019f495
Show file tree
Hide file tree
Showing 59 changed files with 2,160 additions and 423 deletions.
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# Changelog

## [0.9.0-beta] - 02.10.2021

### Added
- mappers paginated table
- mapper detail view (paginated song cards!)
- mapper playlist download
- mapper tabs to navigation bar

### Updated
- navigation bar (responsive update)
- mapper detail view opens on mapper name click
- download sequence

## [0.8.4-beta] - 30.09.2021

### Updated
Expand Down
3 changes: 2 additions & 1 deletion app/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,8 @@ const electronApp = new IndexElectron(app, [
join(loaderRootDir, 'cache.loader'),
join(loaderRootDir, 'settings.loader'),
join(loaderRootDir, 'played-maps.loader'),
join(loaderRootDir, 'local-maps.loader')
join(loaderRootDir, 'local-maps.loader'),
join(loaderRootDir, 'download.loader')
]);

try {
Expand Down
105 changes: 105 additions & 0 deletions app/loaders/download.loader.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
import { v4 } from 'uuid';
import {
TSendBrowserDownload,
TSendBrowserDownloadAction,
TSendEmitDownload
} from '../../src/models/electron/send.channels';
import { CommonLoader } from '../models/CommonLoader.model';
import { IpcHelerps } from '../models/helpers/ipc-main.helpers';
import { MainWindow } from '../models/main.window';

const sendBrowserDownloadAction = IpcHelerps.ipcMainOn<TSendBrowserDownloadAction>(
'DOWNLOAD_ACTION',
(
event: Electron.IpcMainInvokeEvent,
args: { id: string; action: 'resume' | 'cancel' | 'pause' }
) => {
const download = downloader.downloads.get(args.id);
if (download) {
switch (args.action) {
case 'cancel': {
download.cancel();
break;
}
case 'pause': {
download.pause();
break;
}
case 'resume': {
download.resume();
break;
}
}
}
}
);

const sendEmitDownload = IpcHelerps.ipcMainOn<TSendEmitDownload>(
'EMIT_DOWNLOAD',
(event: Electron.IpcMainInvokeEvent, url: string) => {
downloader.browserWindow.webContents.downloadURL(url);
}
);

class DownloaderLoader extends CommonLoader {
public downloads: Map<string, Electron.DownloadItem>;

constructor() {
super();

this.downloads = new Map<string, Electron.DownloadItem>();
}

init(mainWindow: MainWindow) {
super.init(mainWindow);
mainWindow.onceReady(() => this._initDownloadEvents());
}

private _initDownloadEvents() {
this.browserWindow.webContents.session.on(
'will-download',
(
event: Electron.Event,
item: Electron.DownloadItem,
webContents: Electron.WebContents
) => {
const onePercent = 100 / (item.getTotalBytes() || 1);
const id = v4();
this.downloads.set(id, item);
item.on('updated', (event, state) => {
IpcHelerps.webContentsSend<TSendBrowserDownload>(
this.browserWindow,
'DOWNLOAD',
{
event: 'update',
filename: item.getFilename(),
state,
isPaused: item.isPaused(),
progress: Math.round(onePercent * item.getReceivedBytes()),
id
}
);
});
item.once('done', (event, state) => {
IpcHelerps.webContentsSend<TSendBrowserDownload>(
this.browserWindow,
'DOWNLOAD',
{
event: 'done',
filename: item.getFilename(),
state,
isPaused: item.isPaused(),
progress: Math.round(onePercent * item.getReceivedBytes()),
id
}
);
item.removeAllListeners();
this.downloads.delete(id);
});
}
);
}
}

const downloader = new DownloaderLoader();
export default downloader;
9 changes: 5 additions & 4 deletions app/models/main.window.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { resolve } from 'path';
import { EventEmitter } from 'stream';
import { Logger } from 'winston';
import { TSendClose, TSendReady, TSendReadyClose } from '../../src/models/electron/send.channels';
import { DownloadSender } from '../senders/download.sender';
import { IpcHelerps } from './helpers/ipc-main.helpers';
import { WindowStorage } from './windowStorage.model';

Expand All @@ -13,7 +12,6 @@ export class MainWindow extends EventEmitter {
private _windowStorage: WindowStorage;
private _serve: boolean;
private _debug: boolean;
private _downloadSender?: DownloadSender;
private _isReadyToClose: boolean;

get window(): BrowserWindow | null {
Expand All @@ -36,6 +34,10 @@ export class MainWindow extends EventEmitter {
return super.on('ready', cb);
}

onceReady(cb: () => void): this {
return super.once('ready', cb);
}

show(): void {
this._window?.show();
setTimeout(() => {
Expand All @@ -49,7 +51,6 @@ export class MainWindow extends EventEmitter {

public async init(): Promise<void> {
this._window = this._generateWindow();
this._downloadSender = new DownloadSender(this._window);
this._initOnNewWindow(this._window);
this._initOnReady(this._window);
this._initOnClose(this._window);
Expand Down Expand Up @@ -118,7 +119,7 @@ export class MainWindow extends EventEmitter {
private async _loadContent(window: BrowserWindow): Promise<void> {
if (this._serve) {
this.logger.debug('_createWindow serve');
await window.loadURL('http://localhost:4200');
await window.loadURL('https://localhost:4200');
} else {
const path = resolve(__dirname, '..', '..', 'ui', 'index.html');
this.logger.debug('_createWindow prod ' + path);
Expand Down
81 changes: 0 additions & 81 deletions app/senders/download.sender.ts

This file was deleted.

18 changes: 18 additions & 0 deletions certificates/certificate.cnf
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[req]
default_bits = 2048
prompt = no
default_md = sha256
x509_extensions = v3_req
distinguished_name = dn
[dn]
C = GB
ST = London
L = London
O = My Organisation
OU = My Organisational Unit
emailAddress = "[email protected]"
CN = localhost
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
24 changes: 24 additions & 0 deletions certificates/localhost.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
-----BEGIN CERTIFICATE-----
MIIEBTCCAu2gAwIBAgIUW7xOB1u6x/hPBKDbZVkYi0NqwkwwDQYJKoZIhvcNAQEL
BQAwgZ8xCzAJBgNVBAYTAkdCMQ8wDQYDVQQIDAZMb25kb24xDzANBgNVBAcMBkxv
bmRvbjEYMBYGA1UECgwPTXkgT3JnYW5pc2F0aW9uMR8wHQYDVQQLDBZNeSBPcmdh
bmlzYXRpb25hbCBVbml0MR8wHQYJKoZIhvcNAQkBFhBlbWFpbEBkb21haW4uY29t
MRIwEAYDVQQDDAlsb2NhbGhvc3QwHhcNMjEwOTI1MjEyNTAwWhcNMzEwNjI1MjEy
NTAwWjCBnzELMAkGA1UEBhMCR0IxDzANBgNVBAgMBkxvbmRvbjEPMA0GA1UEBwwG
TG9uZG9uMRgwFgYDVQQKDA9NeSBPcmdhbmlzYXRpb24xHzAdBgNVBAsMFk15IE9y
Z2FuaXNhdGlvbmFsIFVuaXQxHzAdBgkqhkiG9w0BCQEWEGVtYWlsQGRvbWFpbi5j
b20xEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBAKTb2dJAciJVx53AhVsRaoiM7YvogRDYR7PAsvLMYYSS9Pw1VHCrMWO+
zm4pkZ2LElIJKeDSiMOKR2CeVAagfXBiXK149CJOCK5iks/xH/+4JW2G46j0Mynu
45moEnQugATUGP3fHiSo7CkSNVNsQXCdQWrR+2a62xvr0/Kadu1Nf1xbhgQlQL84
HqclkR1ld+8KVFu/t2MYf/fG/8eTCA4Srdl+jSR0d0sXknvoPO3pvdLcuRjY8oza
RTSvOmT9MjBRvruF7DD15YFOyhYtNfbuHwqxsujQ0WSu/kQ47IVKFvVt34Z3Rqdn
EcAUiNrRY6ZeY1kZXxzD7p4Bpy/yv+8CAwEAAaM3MDUwFAYDVR0RBA0wC4IJbG9j
YWxob3N0MB0GA1UdDgQWBBQom6G39te1zD9n8v0+iY1g1u5VHTANBgkqhkiG9w0B
AQsFAAOCAQEAPDukKp/Od0wUpUrcESjBdDZH0iQbdIUXwJGJsQTxNLkLfm0r2QFN
l1MN2umhZR4tr25gWMXkIVkZZeWPxB6pgvnIlsC1Ruo5nCug5F7MkjhzteYyLABM
jkCWsFYkBIdjPEOyYRyQTtIrUX86h9MmRXySA/7xXXZ4xmtAwBmO2Q24HtFF6uiU
F9cfxScWezDb8pGG3GvQmfh7y9ivvdqW8D9kDOYpIFRjS6ylHQFP4DGJhkxLdWMu
jmiJdOLDYzI1unZWe5juKwDivPG6DXf1ql58otBoaJwypnJImDO0bMkFU8p7Mm3w
SSd3ZDOTZ6Wz7QkpXFUoeORR5/1aKltpCQ==
-----END CERTIFICATE-----
28 changes: 28 additions & 0 deletions certificates/localhost.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCk29nSQHIiVced
wIVbEWqIjO2L6IEQ2EezwLLyzGGEkvT8NVRwqzFjvs5uKZGdixJSCSng0ojDikdg
nlQGoH1wYlytePQiTgiuYpLP8R//uCVthuOo9DMp7uOZqBJ0LoAE1Bj93x4kqOwp
EjVTbEFwnUFq0ftmutsb69PymnbtTX9cW4YEJUC/OB6nJZEdZXfvClRbv7djGH/3
xv/HkwgOEq3Zfo0kdHdLF5J76Dzt6b3S3LkY2PKM2kU0rzpk/TIwUb67heww9eWB
TsoWLTX27h8KsbLo0NFkrv5EOOyFShb1bd+Gd0anZxHAFIja0WOmXmNZGV8cw+6e
Aacv8r/vAgMBAAECggEAG/zO7+jM95NEfj2O5jUAtwnl0hi4wJlXIucV+i5EZ/Ni
7+ZF3ZLSobJk7ULVW7+ebprrpyVW3ot9LqPyc+WPJiMsxK6CE8jXpHNLpU20Nv+W
Kw/5WleK0BWkQhPMfjjetvMjAwZ74ZFj9l0G/JCmU23/Cxl26qvSQt04cDlU81gt
AtrzCTWiIc145FkID+C2dOwqNF96/D+eqLK0s6IEV48uh1NNvjy+us85TboFpxjR
RoPJLTqF6W6R4cEy4Dth0zmSqdaoHq84TzjlrLmlHZFyHyXosR9vzeilI9eNpVvX
K/Fg+XglHg4vvKuWCFV2NIB5etBCav3uDp/lgfinQQKBgQDP9Goc2DUly9s3lmDn
m03MFZZxoxiyluJr+ElJOQIHyMVH6TAE+86HtGkbxwY+cs3QQBE9OpsQT9CXWuxq
IytsAI6K4wFxTHSLugl/U2Q/u4WF7c4sPSeDFJ3nDkjCb16XdcgWkbjc/nT01FeG
ASQU9/YI+xa7uZgg9ZKQeUhDkQKBgQDK8oFQCr5IVnMRRLmEKpgCO/awmE8L5Ajp
yrj/oFAdo+GHeXH8x6FbmpgYn4u5VepbkpYcFKRur/sD2fdaGFnZXLx8hbM8UqRw
l+PZv6AZ6hTOS99vIaY/U2pvI/mcJOM/oVICsITUjlExDqLDtwlsdLsj8aSj9PL+
Gj0EihILfwKBgE7FncBpYdB8ZQCsdO6mlJSfBMrs5fkYUJJnjZMwBgXe1mQD/82T
eMtM2pfMDyBuqmmdKyqPXZeTNEdxCKa3xcX2fAg+Lxi0xlz7ToetlgbSSKTPzM5T
J/luQNX6QjNsrl8fHXj3IBiORs1K9hBrtDhBKTCDtDvN9MNfYnJZjrcRAoGANyoP
yEgDTPpisLDzlF9XjlPqTDo6UksbuSDnhGR5InVnWkHCoClLTPEKorbLbgdSeq2v
q9ZYk9W172gR+iVgVtsESPy2qZD1Lb27q3aQ+DpOiXzKMRT+cXwlFCy9LppAQw2A
k0aT9Iryutj1mSlpoFdifvSyAfcVDcjoCRHWsdUCgYAiKAQ49XCk5Svl1844tR7N
XTRH2koEfMz4xSw+YSc9dSuuJW7XSM+vMjw5AbBpPGh8vKK/oL8OMTeF95mr4hN2
8mWPoNeU4DXy3l2k6GCtRMCTx0u03rjsmP3A6tmhrNphG816yqe4h1kOC6NWSBbz
D2UuXIhKMD7T2Ja8g7VoLA==
-----END PRIVATE KEY-----
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "beat-saver-client",
"version": "0.8.4-beta",
"version": "0.9.0-beta",
"main": "dist/app/index.js",
"description": "A BeatSaver desktop client",
"author": {
Expand All @@ -16,7 +16,7 @@
"scripts": {
"prestart": "yarn clean",
"start:dev": "concurrently -k \"yarn ng:serve:dev\" \"yarn electron:serve\"",
"ng:serve:dev": "ng serve -c development",
"ng:serve:dev": "ng serve -c development --ssl --ssl-key certificates/localhost.key --ssl-cert certificates/localhost.crt",
"electron:tsc": "tsc -p tsconfig.electron.json",
"electron:serve": "yarn clean && yarn copy && wait-on tcp:4200 && yarn electron:tsc && npx electron . --serve --debug",
"electron:serve:nf": "yarn clean && yarn copy && yarn electron:tsc && npx electron . --serve --debug",
Expand Down
6 changes: 4 additions & 2 deletions src/app/app.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { filter, tap } from 'rxjs/operators';
import { UnsubscribeComponent } from '../models/angular/unsubscribe.model';
import { TSendError } from '../models/electron/send.channels';
import { ElectronService } from './services/root.provided/electron.service';
import { NotifyService } from './services/root.provided/notify.service';
import { ScrollService } from './services/root.provided/scroll.service';
import { SettingsService } from './services/root.provided/settings.service';
@Component({
Expand All @@ -21,9 +22,10 @@ export class AppComponent extends UnsubscribeComponent implements OnInit {
private _optService: SettingsService,
private _eleService: ElectronService,
private _scrollService: ScrollService,
private _router: Router
private _router: Router,
private _notify: NotifyService
) {
super();
super(_notify);
}

ngOnInit() {
Expand Down
Loading

0 comments on commit 019f495

Please sign in to comment.