bring back startup alerts

This commit is contained in:
Matt Hill
2021-07-14 22:46:30 -06:00
committed by Aiden McClelland
parent 2ad5213b44
commit b07c9c2d69
61 changed files with 329 additions and 291 deletions

View File

@@ -1,5 +1,5 @@
import { DependencyErrorType, DockerIoFormat, Manifest, PackageDataEntry, PackageMainStatus, PackageState, ServerStatus } from 'src/app/services/patch-db/data-model'
import { MarketplacePkg, Metric, NotificationLevel, RR, ServerNotification, ServerNotifications } from './api-types'
import { MarketplacePkg, Metric, NotificationLevel, RR, ServerNotification, ServerNotifications } from './api.types'
export module Mock {

View File

@@ -1,23 +1,23 @@
import { HttpService } from '../http.service'
import { MockApiService } from './mock-api.service'
import { LiveApiService } from './live-api.service'
import { MockApiService } from './embassy/embassy-mock-api.service'
import { LiveApiService } from './embassy/embassy-live-api.service'
import { ConfigService } from '../config.service'
import { PatchDbModel } from '../patch-db/patch-db.service'
import { MarketplaceLiveApiService } from './marketplace-live-api.service'
import { MarketplaceMockApiService } from './marketplace-mock-api.service'
import { PatchDbService } from '../patch-db/patch-db.service'
import { MarketplaceLiveApiService } from './marketplace/marketplace-live-api.service'
import { MarketplaceMockApiService } from './marketplace/marketplace-mock-api.service'
export function ApiServiceFactory (config: ConfigService, http: HttpService) {
if (config.mocks.enabled) {
return new MockApiService(config, http)
return new MockApiService(http, config)
} else {
return new LiveApiService(config, http)
return new LiveApiService(http, config)
}
}
export function MarketplaceApiServiceFactory (config: ConfigService, http: HttpService, patch: PatchDbModel) {
export function MarketplaceApiServiceFactory (config: ConfigService, http: HttpService, patch: PatchDbService) {
if (config.mocks.enabled) {
return new MarketplaceMockApiService(http, patch)
return new MarketplaceMockApiService(http, config, patch)
} else {
return new MarketplaceLiveApiService(http, patch)
return new MarketplaceLiveApiService(http, config, patch)
}
}

View File

@@ -167,7 +167,17 @@ export module RR {
export type GetMarketplaceEOSReq = { }
export type GetMarketplaceEOSRes = MarketplaceEOS
export type GetMarketplacePackagesReq = { id?: string, version?: string, category?: string, query?: string, page?: string, 'per-page'?: string }
export type GetMarketplacePackagesReq = {
ids?: string[]
id?: string
// iff id
version?: string
// iff !id
category?: string
query?: string
page?: string
'per-page'?: string
}
export type GetMarketplacePackagesRes = MarketplacePkg[]
export type GetReleaseNotesReq = { id: string }

View File

@@ -1,6 +1,6 @@
import { Subject, Observable } from 'rxjs'
import { Http, Update, Operation, Revision, Source, Store } from 'patch-db-client'
import { RR } from './api-types'
import { RR } from '../api.types'
import { DataModel } from 'src/app/services/patch-db/data-model'
export abstract class ApiService implements Source<DataModel>, Http<DataModel> {

View File

@@ -1,16 +1,16 @@
import { Injectable } from '@angular/core'
import { HttpService, Method } from '../http.service'
import { ApiService } from './api.service'
import { RR } from './api-types'
import { HttpService, Method } from '../../http.service'
import { ApiService } from './embassy-api.service'
import { RR } from '../api.types'
import { parsePropertiesPermissive } from 'src/app/util/properties.util'
import { ConfigService } from '../config.service'
import { ConfigService } from '../../config.service'
@Injectable()
export class LiveApiService extends ApiService {
constructor (
private readonly config: ConfigService,
private readonly http: HttpService,
private readonly config: ConfigService,
) { super() }
async getStatic (url: string): Promise<string> {

View File

@@ -1,22 +1,22 @@
import { Injectable } from '@angular/core'
import { pauseFor } from '../../util/misc.util'
import { ApiService } from './api.service'
import { pauseFor } from '../../../util/misc.util'
import { ApiService } from './embassy-api.service'
import { PatchOp } from 'patch-db-client'
import { PackageDataEntry, PackageMainStatus, PackageState, ServerStatus } from 'src/app/services/patch-db/data-model'
import { RR, WithRevision } from './api-types'
import { RR, WithRevision } from '../api.types'
import { parsePropertiesPermissive } from 'src/app/util/properties.util'
import { Mock } from './mock-app-fixures'
import { HttpService } from '../http.service'
import { Mock } from '../api.fixures'
import { HttpService } from '../../http.service'
import markdown from 'raw-loader!src/assets/markdown/md-sample.md'
import { ConfigService } from '../config.service'
import { ConfigService } from '../../config.service'
@Injectable()
export class MockApiService extends ApiService {
welcomeAck = false
constructor (
private readonly config: ConfigService,
private readonly http: HttpService,
private readonly config: ConfigService,
) { super() }
async getStatic (url: string): Promise<string> {

View File

@@ -1,24 +0,0 @@
import { RR } from './api-types'
// import { DataModel } from 'src/app/services/patch-db/data-model'
import { DataModel } from '../../../../src/app/services/patch-db/data-model'
export abstract class MarketplaceApiService {
abstract getMarketplaceData (params: RR.GetMarketplaceDataReq): Promise<RR.GetMarketplaceDataRes>
abstract getEos (params: RR.GetMarketplaceEOSReq): Promise<RR.GetMarketplaceEOSRes>
abstract getMarketplacePkgs (params: RR.GetMarketplacePackagesReq): Promise<RR.GetMarketplacePackagesRes>
abstract getReleaseNotes (params: RR.GetReleaseNotesReq): Promise<RR.GetReleaseNotesRes>
}
export function getMarketURL (eosOrPackage: 'eos' | 'package', data: DataModel): string {
const eosMarketplace = data['server-info']['eos-marketplace']
if (eosOrPackage === 'eos') {
return eosMarketplace
} else {
const packageMarketplace = data['server-info']['package-marketplace']
return packageMarketplace || eosMarketplace
}
}

View File

@@ -1,31 +0,0 @@
import { Injectable } from '@angular/core'
import { HttpService } from '../http.service'
import { getMarketURL } from './marketplace-api.service'
import { RR } from './api-types'
import { MarketplaceApiService } from './marketplace-api.service'
import { PatchDbModel } from '../patch-db/patch-db.service'
@Injectable()
export class MarketplaceLiveApiService extends MarketplaceApiService {
constructor (
private readonly http: HttpService,
private readonly patch: PatchDbModel,
) { super() }
async getMarketplaceData (params: RR.GetMarketplaceDataReq): Promise<RR.GetMarketplaceDataRes> {
return this.http.simpleGet<RR.GetMarketplaceDataRes>(getMarketURL('package', this.patch.data), params)
}
async getEos (params: RR.GetMarketplaceEOSReq): Promise<RR.GetMarketplaceEOSRes> {
return this.http.simpleGet<RR.GetMarketplaceEOSRes>(getMarketURL('eos', this.patch.data), params)
}
async getMarketplacePkgs (params: RR.GetMarketplacePackagesReq): Promise<RR.GetMarketplacePackagesRes> {
return this.http.simpleGet<RR.GetMarketplacePackagesRes>(getMarketURL('package', this.patch.data), params)
}
async getReleaseNotes (params: RR.GetReleaseNotesReq): Promise<RR.GetReleaseNotesRes> {
return this.http.simpleGet<RR.GetReleaseNotesRes>(getMarketURL('package', this.patch.data), params)
}
}

View File

@@ -0,0 +1,29 @@
import { RR } from '../api.types'
import { ConfigService } from '../../config.service'
import { PatchDbService } from '../../patch-db/patch-db.service'
export abstract class MarketplaceApiService {
constructor (
readonly config: ConfigService,
readonly patch: PatchDbService,
) { }
abstract getEos (params: RR.GetMarketplaceEOSReq): Promise<RR.GetMarketplaceEOSRes>
abstract getMarketplaceData (params: RR.GetMarketplaceDataReq): Promise<RR.GetMarketplaceDataRes>
abstract getMarketplacePkgs (params: RR.GetMarketplacePackagesReq): Promise<RR.GetMarketplacePackagesRes>
abstract getReleaseNotes (params: RR.GetReleaseNotesReq): Promise<RR.GetReleaseNotesRes>
getMarketplaceURL (type: 'eos' | 'package'): string {
const eosMarketplace = this.patch.data['server-info']['eos-marketplace'] || this.config.start9Marketplace.clearnet
if (type === 'eos') {
return eosMarketplace
} else {
const packageMarketplace = this.patch.data['server-info']['package-marketplace']
return packageMarketplace || eosMarketplace
}
}
}

View File

@@ -0,0 +1,34 @@
import { Injectable } from '@angular/core'
import { HttpService } from '../../http.service'
import { RR } from '../api.types'
import { MarketplaceApiService } from './marketplace-api.service'
import { PatchDbService } from '../../patch-db/patch-db.service'
import { ConfigService } from '../../config.service'
@Injectable()
export class MarketplaceLiveApiService extends MarketplaceApiService {
constructor (
private readonly http: HttpService,
config: ConfigService,
patch: PatchDbService,
) {
super(config, patch)
}
async getEos (params: RR.GetMarketplaceEOSReq): Promise<RR.GetMarketplaceEOSRes> {
return this.http.simpleGet<RR.GetMarketplaceEOSRes>(this.getMarketplaceURL('eos'), params)
}
async getMarketplaceData (params: RR.GetMarketplaceDataReq): Promise<RR.GetMarketplaceDataRes> {
return this.http.simpleGet<RR.GetMarketplaceDataRes>(this.getMarketplaceURL('package'), params)
}
async getMarketplacePkgs (params: RR.GetMarketplacePackagesReq): Promise<RR.GetMarketplacePackagesRes> {
return this.http.simpleGet<RR.GetMarketplacePackagesRes>(this.getMarketplaceURL('package'), params)
}
async getReleaseNotes (params: RR.GetReleaseNotesReq): Promise<RR.GetReleaseNotesRes> {
return this.http.simpleGet<RR.GetReleaseNotesRes>(this.getMarketplaceURL('package'), params)
}
}

View File

@@ -1,62 +1,68 @@
import { Injectable } from '@angular/core'
import { pauseFor } from '../../util/misc.util'
import { RR } from './api-types'
import { Mock } from './mock-app-fixures'
import { HttpService } from '../http.service'
import { pauseFor } from '../../../util/misc.util'
import { RR } from '../api.types'
import { Mock } from '../api.fixures'
import { HttpService } from '../../http.service'
import { MarketplaceApiService } from './marketplace-api.service'
import { getMarketURL } from './marketplace-api.service'
import { PatchDbModel } from '../patch-db/patch-db.service'
import { PatchDbService } from '../../patch-db/patch-db.service'
import { ConfigService } from '../../config.service'
@Injectable()
export class MarketplaceMockApiService extends MarketplaceApiService {
welcomeAck = false
constructor (
private readonly http: HttpService,
private readonly patch: PatchDbModel,
) { super() }
config: ConfigService,
patch: PatchDbService,
) {
super(config, patch)
}
// marketplace
async getEos (params: RR.GetMarketplaceEOSReq): Promise<RR.GetMarketplaceEOSRes> {
let url = this.getMarketplaceURL('eos')
if (this.useLocal(url)) {
await pauseFor(2000)
return Mock.MarketplaceEos
}
url = `${url}/sys/version/eos`
return this.http.simpleGet<RR.GetMarketplaceEOSRes>(url)
}
async getMarketplaceData (params: RR.GetMarketplaceDataReq): Promise<RR.GetMarketplaceDataRes> {
const registryURL = getMarketURL('package', this.patch.data)
if (!registryURL) {
let url = this.getMarketplaceURL('package')
if (this.useLocal(url)) {
await pauseFor(2000)
return {
categories: ['featured', 'bitcoin', 'lightning', 'data', 'messaging', 'social', 'alt coin'],
}
}
const url = `${registryURL}/marketplace/data`
url = `${url}/marketplace/data`
return this.http.simpleGet<RR.GetMarketplaceDataRes>(url)
}
async getEos (params: RR.GetMarketplaceEOSReq): Promise<RR.GetMarketplaceEOSRes> {
const registryURL = getMarketURL('eos', this.patch.data)
if (!registryURL) {
await pauseFor(2000)
return Mock.MarketplaceEos
}
const url = `${registryURL}/sys/version/eos`
return this.http.simpleGet<RR.GetMarketplaceEOSRes>(url)
}
async getMarketplacePkgs (params: RR.GetMarketplacePackagesReq): Promise<RR.GetMarketplacePackagesRes> {
const registryURL = getMarketURL('package', this.patch.data)
if (!registryURL) {
let url = this.getMarketplaceURL('package')
if (this.useLocal(url)) {
await pauseFor(2000)
return Mock.AvailableList
}
const url = `${registryURL}/marketplace/packages`
url = `${url}/marketplace/packages`
return this.http.simpleGet<RR.GetMarketplacePackagesRes>(url, params)
}
async getReleaseNotes (params: RR.GetReleaseNotesReq): Promise<RR.GetReleaseNotesRes> {
const registryURL = getMarketURL('package', this.patch.data)
if (!registryURL) {
let url = this.getMarketplaceURL('package')
if (this.useLocal(url)) {
await pauseFor(2000)
return Mock.ReleaseNotes
}
const url = `${registryURL}/marketplace/release-notes`
url = `${url}/marketplace/release-notes`
return this.http.simpleGet<RR.GetReleaseNotesRes>(url)
}
private useLocal (url: string): boolean {
return !url || this.config.mocks.marketplace
}
}