Subdomain enterprise support
This commit is contained in:
@@ -238,6 +238,10 @@ export class ApiService {
|
||||
return this.httpClient.get<RewardStats>(this.apiBaseUrl + this.apiBasePath + `/api/v1/mining/reward-stats/${blockCount}`);
|
||||
}
|
||||
|
||||
getEnterpriseInfo$(name: string): Observable<any> {
|
||||
return this.httpClient.get<any>(this.apiBaseUrl + this.apiBasePath + `/api/v1/enterprise/info/` + name);
|
||||
}
|
||||
|
||||
getChannelByTxIds$(txIds: string[]): Observable<{ inputs: any[], outputs: any[] }> {
|
||||
let params = new HttpParams();
|
||||
txIds.forEach((txId: string) => {
|
||||
|
||||
79
frontend/src/app/services/enterprise.service.ts
Normal file
79
frontend/src/app/services/enterprise.service.ts
Normal file
@@ -0,0 +1,79 @@
|
||||
import { DOCUMENT } from '@angular/common';
|
||||
import { Inject, Injectable } from '@angular/core';
|
||||
import { ApiService } from './api.service';
|
||||
import { SeoService } from './seo.service';
|
||||
import { StateService } from './state.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class EnterpriseService {
|
||||
exclusiveHostName = '.mempool.space';
|
||||
subdomain: string | null = null;
|
||||
info: object = {};
|
||||
|
||||
constructor(
|
||||
@Inject(DOCUMENT) private document: Document,
|
||||
private apiService: ApiService,
|
||||
private seoService: SeoService,
|
||||
private stateService: StateService,
|
||||
) {
|
||||
const subdomain = this.document.location.hostname.indexOf(this.exclusiveHostName) > -1
|
||||
&& this.document.location.hostname.split(this.exclusiveHostName)[0] || false;
|
||||
if (subdomain && subdomain.match(/^[A-z0-9-_]+$/)) {
|
||||
this.subdomain = subdomain;
|
||||
this.fetchSubdomainInfo();
|
||||
this.disableSubnetworks();
|
||||
} else {
|
||||
this.insertMatomo();
|
||||
}
|
||||
}
|
||||
|
||||
getSubdomain() {
|
||||
return this.subdomain;
|
||||
}
|
||||
|
||||
disableSubnetworks() {
|
||||
this.stateService.env.TESTNET_ENABLED = false;
|
||||
this.stateService.env.LIQUID_ENABLED = false;
|
||||
this.stateService.env.LIQUID_TESTNET_ENABLED = false;
|
||||
this.stateService.env.SIGNET_ENABLED = false;
|
||||
this.stateService.env.BISQ_ENABLED = false;
|
||||
}
|
||||
|
||||
fetchSubdomainInfo() {
|
||||
this.apiService.getEnterpriseInfo$(this.subdomain).subscribe((info) => {
|
||||
this.info = info;
|
||||
this.insertMatomo(info.site_id);
|
||||
this.seoService.setEnterpriseTitle(info.title);
|
||||
},
|
||||
(error) => {
|
||||
if (error.status === 404) {
|
||||
window.location.href = 'https://mempool.space';
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
insertMatomo(siteId = 5) {
|
||||
let statsUrl = '//stats.mempool.space/';
|
||||
if (this.document.location.hostname === 'liquid.network') {
|
||||
statsUrl = '//stats.liquid.network/';
|
||||
siteId = 8;
|
||||
} else if (this.document.location.hostname === 'bisq.markets') {
|
||||
statsUrl = '//stats.bisq.markets/';
|
||||
siteId = 7;
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
const _paq = window._paq = window._paq || [];
|
||||
_paq.push(['disableCookies']);
|
||||
_paq.push(['trackPageView']);
|
||||
_paq.push(['enableLinkTracking']);
|
||||
(function() {
|
||||
_paq.push(['setTrackerUrl', statsUrl+'m.php']);
|
||||
_paq.push(['setSiteId', siteId.toString()]);
|
||||
const d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
||||
g.type='text/javascript'; g.async=true; g.src=statsUrl+'m.js'; s.parentNode.insertBefore(g,s);
|
||||
})();
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import { StateService } from './state.service';
|
||||
})
|
||||
export class SeoService {
|
||||
network = '';
|
||||
baseTitle = 'mempool';
|
||||
|
||||
constructor(
|
||||
private titleService: Title,
|
||||
@@ -26,18 +27,23 @@ export class SeoService {
|
||||
this.metaService.updateTag({ property: 'og:title', content: this.getTitle()});
|
||||
}
|
||||
|
||||
setEnterpriseTitle(title: string) {
|
||||
this.baseTitle = title + ' - ' + this.baseTitle;
|
||||
this.resetTitle();
|
||||
}
|
||||
|
||||
getTitle(): string {
|
||||
if (this.network === 'testnet')
|
||||
return 'mempool - Bitcoin Testnet';
|
||||
return this.baseTitle + ' - Bitcoin Testnet';
|
||||
if (this.network === 'signet')
|
||||
return 'mempool - Bitcoin Signet';
|
||||
return this.baseTitle + ' - Bitcoin Signet';
|
||||
if (this.network === 'liquid')
|
||||
return 'mempool - Liquid Network';
|
||||
return this.baseTitle + ' - Liquid Network';
|
||||
if (this.network === 'liquidtestnet')
|
||||
return 'mempool - Liquid Testnet';
|
||||
return this.baseTitle + ' - Liquid Testnet';
|
||||
if (this.network === 'bisq')
|
||||
return 'mempool - Bisq Markets';
|
||||
return 'mempool - ' + (this.network ? this.ucfirst(this.network) : 'Bitcoin') + ' Explorer';
|
||||
return this.baseTitle + ' - Bisq Markets';
|
||||
return this.baseTitle + ' - ' + (this.network ? this.ucfirst(this.network) : 'Bitcoin') + ' Explorer';
|
||||
}
|
||||
|
||||
ucfirst(str: string) {
|
||||
|
||||
Reference in New Issue
Block a user