From 4850a973531778e862c14bc4a63bdafba5265b15 Mon Sep 17 00:00:00 2001 From: Kyle Kemp Date: Tue, 29 Aug 2023 07:50:19 -0500 Subject: [PATCH] feat(updates): add game updates page, closes #80 --- .gitignore | 3 +- client/package-lock.json | 237 ++++++++++++++++++ client/package.json | 5 +- client/src/app/app-routing.module.ts | 7 + client/src/app/app.module.ts | 4 + client/src/app/pages/me/me.page.html | 5 + .../src/app/pages/options/options.page.html | 6 +- client/src/app/pages/options/options.page.ts | 52 +--- .../pages/updates/updates-routing.module.ts | 17 ++ .../src/app/pages/updates/updates.module.ts | 22 ++ .../src/app/pages/updates/updates.page.html | 26 ++ .../src/app/pages/updates/updates.page.scss | 0 client/src/app/pages/updates/updates.page.ts | 35 +++ client/src/app/services/meta.service.ts | 92 +++++++ package.json | 4 +- 15 files changed, 459 insertions(+), 56 deletions(-) create mode 100644 client/src/app/pages/updates/updates-routing.module.ts create mode 100644 client/src/app/pages/updates/updates.module.ts create mode 100644 client/src/app/pages/updates/updates.page.html create mode 100644 client/src/app/pages/updates/updates.page.scss create mode 100644 client/src/app/pages/updates/updates.page.ts create mode 100644 client/src/app/services/meta.service.ts diff --git a/.gitignore b/.gitignore index dca39cd..f80d7a8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules *version*.md -blog-post.txt \ No newline at end of file +blog-post.txt +client/src/assets/*.md \ No newline at end of file diff --git a/client/package-lock.json b/client/package-lock.json index 54d1b59..6ad8c35 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -35,6 +35,7 @@ "fast-json-patch": "^3.1.1", "ionicons": "^7.0.0", "lodash": "^4.17.21", + "marked": "^7.0.5", "ngx-tippy-wrapper": "^6.1.0", "ngx-webstorage": "^12.0.0", "rollbar": "^2.26.1", @@ -60,6 +61,7 @@ "@types/node": "^12.11.1", "@typescript-eslint/eslint-plugin": "5.3.0", "@typescript-eslint/parser": "5.3.0", + "cpy-cli": "^5.0.0", "eslint": "^7.26.0", "eslint-plugin-import": "2.22.1", "eslint-plugin-jsdoc": "30.7.6", @@ -5640,6 +5642,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/arrify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", + "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -6742,6 +6756,76 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/cp-file": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-10.0.0.tgz", + "integrity": "sha512-vy2Vi1r2epK5WqxOLnskeKeZkdZvTKfFZQCplE3XWsP+SUJyd5XAUFC9lFgTjjXJF2GMne/UML14iEmkAaDfFg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.10", + "nested-error-stacks": "^2.1.1", + "p-event": "^5.0.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cpy": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/cpy/-/cpy-10.1.0.tgz", + "integrity": "sha512-VC2Gs20JcTyeQob6UViBLnyP0bYHkBh6EiKzot9vi2DmeGlFT9Wd7VG3NBrkNx/jYvFBeyDOMMHdHQhbtKLgHQ==", + "dev": true, + "dependencies": { + "arrify": "^3.0.0", + "cp-file": "^10.0.0", + "globby": "^13.1.4", + "junk": "^4.0.1", + "micromatch": "^4.0.5", + "nested-error-stacks": "^2.1.1", + "p-filter": "^3.0.0", + "p-map": "^6.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cpy-cli": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-5.0.0.tgz", + "integrity": "sha512-fb+DZYbL9KHc0BC4NYqGRrDIJZPXUmjjtqdw4XRRg8iV8dIfghUX/WiL+q4/B/KFTy3sK6jsbUhBaz0/Hxg7IQ==", + "dev": true, + "dependencies": { + "cpy": "^10.1.0", + "meow": "^12.0.1" + }, + "bin": { + "cpy": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cpy/node_modules/p-map": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-6.0.0.tgz", + "integrity": "sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/critters": { "version": "0.0.16", "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", @@ -10344,6 +10428,18 @@ "node >= 0.2.0" ] }, + "node_modules/junk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz", + "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/karma-source-map-support": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", @@ -10767,6 +10863,17 @@ "node": ">=12" } }, + "node_modules/marked": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/marked/-/marked-7.0.5.tgz", + "integrity": "sha512-lwNAFTfXgqpt/XvK17a/8wY9/q6fcSPZT1aP6QW0u74VwaJF/Z9KbRcX23sWE4tODM+AolJNcUtErTkgOeFP/Q==", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 16" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -10788,6 +10895,18 @@ "node": ">= 4.0.0" } }, + "node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -11284,6 +11403,12 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "node_modules/nested-error-stacks": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz", + "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==", + "dev": true + }, "node_modules/ngx-tippy-wrapper": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/ngx-tippy-wrapper/-/ngx-tippy-wrapper-6.1.0.tgz", @@ -12175,6 +12300,106 @@ "node": ">=0.10.0" } }, + "node_modules/p-event": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz", + "integrity": "sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==", + "dev": true, + "dependencies": { + "p-timeout": "^5.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-3.0.0.tgz", + "integrity": "sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==", + "dev": true, + "dependencies": { + "p-map": "^5.1.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter/node_modules/aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "dev": true, + "dependencies": { + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter/node_modules/clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter/node_modules/p-map": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", + "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", + "dev": true, + "dependencies": { + "aggregate-error": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -12230,6 +12455,18 @@ "node": ">=8" } }, + "node_modules/p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", diff --git a/client/package.json b/client/package.json index d6ef3d2..c69b7aa 100644 --- a/client/package.json +++ b/client/package.json @@ -9,7 +9,8 @@ "start": "ng serve -o --port 3699", "setup": "ts-node scripts/setup", "build": "ng build --configuration production", - "build:netlify": "npm run build && npm run generate:version", + "build:netlify": "npm run build && npm run generate:version && npm run build:copychangelog", + "build:copychangelog": "cpy ../CHANGELOG.md ../CHANGELOG-current.md www/assets/changelog", "generate:version": "ts-node scripts/version", "watch": "ng build --watch --configuration development", "lint": "ng lint" @@ -43,6 +44,7 @@ "fast-json-patch": "^3.1.1", "ionicons": "^7.0.0", "lodash": "^4.17.21", + "marked": "^7.0.5", "ngx-tippy-wrapper": "^6.1.0", "ngx-webstorage": "^12.0.0", "rollbar": "^2.26.1", @@ -68,6 +70,7 @@ "@types/node": "^12.11.1", "@typescript-eslint/eslint-plugin": "5.3.0", "@typescript-eslint/parser": "5.3.0", + "cpy-cli": "^5.0.0", "eslint": "^7.26.0", "eslint-plugin-import": "2.22.1", "eslint-plugin-jsdoc": "30.7.6", diff --git a/client/src/app/app-routing.module.ts b/client/src/app/app-routing.module.ts index 858faa2..a1c55bd 100644 --- a/client/src/app/app-routing.module.ts +++ b/client/src/app/app-routing.module.ts @@ -102,6 +102,13 @@ const routes: Routes = [ loadChildren: () => import('./pages/combat/combat.module').then((m) => m.CombatPageModule), }, + { + path: 'updates', + canActivate: [AuthGuard], + data: { title: 'Game Updates' }, + loadChildren: () => + import('./pages/updates/updates.module').then((m) => m.UpdatesPageModule), + }, { path: '**', diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts index 9026703..bf168e7 100644 --- a/client/src/app/app.module.ts +++ b/client/src/app/app.module.ts @@ -24,6 +24,7 @@ import { DataGrabberInterceptor } from '@helpers/data-grabber.interceptor'; import { AuthService } from '@services/auth.service'; import { ContentService } from '@services/content.service'; import { FightService } from '@services/fight.service'; +import { MetaService } from '@services/meta.service'; import { NotificationsService } from '@services/notifications.service'; import { RollbarErrorHandler, RollbarService } from '@services/rollbar.service'; import { NgxTippyModule } from 'ngx-tippy-wrapper'; @@ -98,6 +99,7 @@ export function getAuthToken() { notificationService: NotificationsService, fightService: FightService, rollbarService: RollbarService, + metaService: MetaService, ) => async () => { await assetService.init(); @@ -106,6 +108,7 @@ export function getAuthToken() { await notificationService.init(); await fightService.init(); await rollbarService.init(); + await metaService.init(); }, deps: [ AssetService, @@ -114,6 +117,7 @@ export function getAuthToken() { NotificationsService, FightService, RollbarService, + MetaService, ], multi: true, }, diff --git a/client/src/app/pages/me/me.page.html b/client/src/app/pages/me/me.page.html index b41e7e5..a85de45 100644 --- a/client/src/app/pages/me/me.page.html +++ b/client/src/app/pages/me/me.page.html @@ -102,6 +102,11 @@

Bio

Change Settings + + + Game Updates + + Logout diff --git a/client/src/app/pages/options/options.page.html b/client/src/app/pages/options/options.page.html index fd83bad..52f26d0 100644 --- a/client/src/app/pages/options/options.page.html +++ b/client/src/app/pages/options/options.page.html @@ -15,17 +15,17 @@ Client Version: - {{ version }} + {{ metaService.version }} Content Version: - {{ contentVersion }} + {{ metaService.contentVersion }} Assets Version: - {{ artVersion }} + {{ metaService.artVersion }} diff --git a/client/src/app/pages/options/options.page.ts b/client/src/app/pages/options/options.page.ts index 8ecfc7b..0d26d75 100644 --- a/client/src/app/pages/options/options.page.ts +++ b/client/src/app/pages/options/options.page.ts @@ -1,6 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { GameOption } from '@interfaces'; import { Select, Store } from '@ngxs/store'; +import { MetaService } from '@services/meta.service'; import { OptionsStore } from '@stores'; import { SetOption } from '@stores/options/options.actions'; import { Observable } from 'rxjs'; @@ -15,56 +16,9 @@ export class OptionsPage implements OnInit { Record >; - private versionInfo: any = { - tag: '', - semverString: '', - raw: 'v.local', - hash: 'v.local', - distance: -1, - }; + constructor(private store: Store, public metaService: MetaService) {} - public get version(): string { - if (this.versionInfo.distance >= 0 && this.versionInfo.tag) { - return `${this.versionInfo.tag} (${this.versionInfo.raw})`; - } - - return ( - this.versionInfo.tag || - this.versionInfo.semverString || - this.versionInfo.raw || - this.versionInfo.hash - ); - } - - public get contentVersion(): string { - return ( - (localStorage.getItem('contentVersion') || '').substring(0, 8) || - 'unknown' - ); - } - - public get artVersion(): string { - return ( - (localStorage.getItem('artVersion') || '').substring(0, 8) || 'unknown' - ); - } - - constructor(private store: Store) {} - - ngOnInit() { - this.loadVersionInfo(); - } - - async loadVersionInfo() { - try { - const response = await fetch('/assets/version.json'); - const json = await response.json(); - - this.versionInfo = json; - } catch { - console.error('Could not load version information'); - } - } + ngOnInit() {} setOption(option: string, event: any) { this.store.dispatch( diff --git a/client/src/app/pages/updates/updates-routing.module.ts b/client/src/app/pages/updates/updates-routing.module.ts new file mode 100644 index 0000000..b2e8cc9 --- /dev/null +++ b/client/src/app/pages/updates/updates-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { UpdatesPage } from './updates.page'; + +const routes: Routes = [ + { + path: '', + component: UpdatesPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class UpdatesPageRoutingModule {} diff --git a/client/src/app/pages/updates/updates.module.ts b/client/src/app/pages/updates/updates.module.ts new file mode 100644 index 0000000..5ffffd5 --- /dev/null +++ b/client/src/app/pages/updates/updates.module.ts @@ -0,0 +1,22 @@ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { UpdatesPageRoutingModule } from './updates-routing.module'; + +import { SharedModule } from 'src/app/shared.module'; +import { UpdatesPage } from './updates.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + SharedModule, + IonicModule, + UpdatesPageRoutingModule, + ], + declarations: [UpdatesPage], +}) +export class UpdatesPageModule {} diff --git a/client/src/app/pages/updates/updates.page.html b/client/src/app/pages/updates/updates.page.html new file mode 100644 index 0000000..a661104 --- /dev/null +++ b/client/src/app/pages/updates/updates.page.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + Current + + + + All + + + +
+
+
+
+
diff --git a/client/src/app/pages/updates/updates.page.scss b/client/src/app/pages/updates/updates.page.scss new file mode 100644 index 0000000..e69de29 diff --git a/client/src/app/pages/updates/updates.page.ts b/client/src/app/pages/updates/updates.page.ts new file mode 100644 index 0000000..7330336 --- /dev/null +++ b/client/src/app/pages/updates/updates.page.ts @@ -0,0 +1,35 @@ +import { Component, OnInit } from '@angular/core'; +import { MetaService } from '@services/meta.service'; +import { marked } from 'marked'; + +@Component({ + selector: 'app-updates', + templateUrl: './updates.page.html', + styleUrls: ['./updates.page.scss'], +}) +export class UpdatesPage implements OnInit { + public mode = 'current'; + + public changelog = ''; + + constructor(public metaService: MetaService) {} + + ngOnInit() { + this.selectCategory({ detail: { value: 'current' } }); + } + + selectCategory(event: any) { + this.mode = event.detail.value; + + const parseString = + this.mode === 'current' + ? this.metaService.changelogCurrent + : this.metaService.changelogFull; + + const renderer = new marked.Renderer(); + renderer.link = (href, title, text) => + `${text}`; + + this.changelog = marked(parseString, { renderer }); + } +} diff --git a/client/src/app/services/meta.service.ts b/client/src/app/services/meta.service.ts new file mode 100644 index 0000000..891031c --- /dev/null +++ b/client/src/app/services/meta.service.ts @@ -0,0 +1,92 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root', +}) +export class MetaService { + private versionInfo: any = { + tag: '', + semverString: '', + raw: 'v.local', + hash: 'v.local', + distance: -1, + }; + + private changelogAll = ''; + private changelogNow = ''; + + public get changelogFull() { + return this.changelogAll; + } + + public get changelogCurrent() { + return this.changelogNow; + } + + public get version(): string { + if (this.versionInfo.distance >= 0 && this.versionInfo.tag) { + return `${this.versionInfo.tag} (${this.versionInfo.raw})`; + } + + return ( + this.versionInfo.tag || + this.versionInfo.semverString || + this.versionInfo.raw || + this.versionInfo.hash + ); + } + + public get contentVersion(): string { + return ( + (localStorage.getItem('contentVersion') || '').substring(0, 8) || + 'unknown' + ); + } + + public get artVersion(): string { + return ( + (localStorage.getItem('artVersion') || '').substring(0, 8) || 'unknown' + ); + } + + constructor() {} + + async init() { + await this.loadVersionInfo(); + await this.loadChangelogAll(); + await this.loadChangelogCurrent(); + } + + async loadVersionInfo() { + try { + const response = await fetch('/assets/version.json'); + const json = await response.json(); + + this.versionInfo = json; + } catch { + console.error('Could not load version information'); + } + } + + async loadChangelogAll() { + try { + const response = await fetch('/assets/CHANGELOG.md'); + const text = await response.text(); + + this.changelogAll = text; + } catch { + console.error('Could not load changelog all information'); + } + } + + async loadChangelogCurrent() { + try { + const response = await fetch('/assets/CHANGELOG-current.md'); + const text = await response.text(); + + this.changelogNow = text; + } catch { + console.error('Could not load changelog current information'); + } + } +} diff --git a/package.json b/package.json index 803a3d3..53f0e3d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "ateoat-server", - "description": "ateoat server", + "name": "ateoat-main", + "description": "ateoat main package", "version": "0.0.1", "author": "ateoat team", "private": true,