Update api

This commit is contained in:
Bill 2021-07-22 01:09:31 -04:00
parent ac392c71cf
commit 28804ba67a
34 changed files with 106 additions and 64 deletions

View File

@ -1,6 +1,6 @@
import { ConfigurationEvent, LegacyExternalInterface, Nitro, NitroCommunicationDemoEvent, NitroEvent, NitroLocalizationEvent, RoomEngineEvent, WebGL } from 'nitro-renderer'; import { ConfigurationEvent, LegacyExternalInterface, Nitro, NitroCommunicationDemoEvent, NitroEvent, NitroLocalizationEvent, RoomEngineEvent, WebGL } from 'nitro-renderer';
import { FC, useCallback, useState } from 'react'; import { FC, useCallback, useState } from 'react';
import { GetConfiguration } from './api'; import { GetCommunication, GetConfiguration, GetNitroInstance } from './api';
import { useConfigurationEvent } from './hooks/events/core/configuration/configuration-event'; import { useConfigurationEvent } from './hooks/events/core/configuration/configuration-event';
import { useLocalizationEvent } from './hooks/events/nitro/localization/localization-event'; import { useLocalizationEvent } from './hooks/events/nitro/localization/localization-event';
import { dispatchMainEvent, useMainEvent } from './hooks/events/nitro/main-event'; import { dispatchMainEvent, useMainEvent } from './hooks/events/nitro/main-event';
@ -19,7 +19,7 @@ export const App: FC<{}> = props =>
//@ts-ignore //@ts-ignore
if(!NitroConfig) throw new Error('NitroConfig is not defined!'); if(!NitroConfig) throw new Error('NitroConfig is not defined!');
if(!Nitro.instance) Nitro.bootstrap(); if(!GetNitroInstance()) Nitro.bootstrap();
const getPreloadAssetUrls = useCallback(() => const getPreloadAssetUrls = useCallback(() =>
{ {
@ -28,7 +28,7 @@ export const App: FC<{}> = props =>
if(assetUrls && assetUrls.length) if(assetUrls && assetUrls.length)
{ {
for(const url of assetUrls) urls.push(Nitro.instance.core.configuration.interpolate(url)); for(const url of assetUrls) urls.push(GetNitroInstance().core.configuration.interpolate(url));
} }
return urls; return urls;
@ -39,7 +39,7 @@ export const App: FC<{}> = props =>
switch(event.type) switch(event.type)
{ {
case ConfigurationEvent.LOADED: case ConfigurationEvent.LOADED:
Nitro.instance.localization.init(); GetNitroInstance().localization.init();
return; return;
case ConfigurationEvent.FAILED: case ConfigurationEvent.FAILED:
setIsError(true); setIsError(true);
@ -73,14 +73,14 @@ export const App: FC<{}> = props =>
case NitroCommunicationDemoEvent.CONNECTION_AUTHENTICATED: case NitroCommunicationDemoEvent.CONNECTION_AUTHENTICATED:
setMessage('Finishing Up'); setMessage('Finishing Up');
Nitro.instance.init(); GetNitroInstance().init();
return; return;
case NitroCommunicationDemoEvent.CONNECTION_ERROR: case NitroCommunicationDemoEvent.CONNECTION_ERROR:
setIsError(true); setIsError(true);
setMessage('Connection Error'); setMessage('Connection Error');
return; return;
case NitroCommunicationDemoEvent.CONNECTION_CLOSED: case NitroCommunicationDemoEvent.CONNECTION_CLOSED:
if(Nitro.instance.roomEngine) Nitro.instance.roomEngine.dispose(); if(GetNitroInstance().roomEngine) GetNitroInstance().roomEngine.dispose();
setIsError(true); setIsError(true);
setMessage('Connection Error'); setMessage('Connection Error');
@ -91,13 +91,13 @@ export const App: FC<{}> = props =>
setIsReady(true); setIsReady(true);
return; return;
case NitroLocalizationEvent.LOADED: case NitroLocalizationEvent.LOADED:
Nitro.instance.core.asset.downloadAssets(getPreloadAssetUrls(), (status: boolean) => GetNitroInstance().core.asset.downloadAssets(getPreloadAssetUrls(), (status: boolean) =>
{ {
if(status) if(status)
{ {
setMessage('Connecting'); setMessage('Connecting');
Nitro.instance.communication.init(); GetCommunication().init();
} }
else else
{ {
@ -127,7 +127,7 @@ export const App: FC<{}> = props =>
} }
else else
{ {
Nitro.instance.core.configuration.init(); GetNitroInstance().core.configuration.init();
} }
return ( return (

View File

@ -1,6 +0,0 @@
import { CatalogPageComposer } from 'nitro-renderer';
export function GetCatalogPageComposer(...args: ConstructorParameters<typeof CatalogPageComposer>): CatalogPageComposer
{
return new CatalogPageComposer(...args);
}

View File

@ -0,0 +1,7 @@
import { IConfigurationManager } from 'nitro-renderer';
import { GetNitroCore } from './GetNitroCore';
export function GetConfigurationManager(): IConfigurationManager
{
return GetNitroCore().configuration;
}

View File

@ -0,0 +1,7 @@
import { INitroCore } from 'nitro-renderer';
import { GetNitroInstance } from '../nitro';
export function GetNitroCore(): INitroCore
{
return GetNitroInstance().core;
}

2
src/api/core/index.ts Normal file
View File

@ -0,0 +1,2 @@
export * from './GetConfigurationManager';
export * from './GetNitroCore';

View File

@ -1 +1,2 @@
export * from './core';
export * from './nitro'; export * from './nitro';

View File

@ -0,0 +1,7 @@
import { ILinkEventTracker } from 'nitro-renderer';
import { GetNitroInstance } from './GetNitroInstance';
export function AddEventLinkTracker(tracker: ILinkEventTracker): void
{
GetNitroInstance().addLinkEventTracker(tracker);
}

View File

@ -0,0 +1,7 @@
import { INitroCommunicationManager } from 'nitro-renderer';
import { GetNitroInstance } from './GetNitroInstance';
export function GetCommunication(): INitroCommunicationManager
{
return GetNitroInstance().communication;
}

View File

@ -1,6 +1,6 @@
import { Nitro } from 'nitro-renderer'; import { GetNitroInstance } from './GetNitroInstance';
export function GetConfiguration<T>(key: string, value: T = null): T export function GetConfiguration<T>(key: string, value: T = null): T
{ {
return Nitro.instance.getConfiguration(key, value); return GetNitroInstance().getConfiguration(key, value);
} }

View File

@ -1,6 +1,7 @@
import { IConnection, Nitro } from 'nitro-renderer'; import { IConnection } from 'nitro-renderer';
import { GetCommunication } from './GetCommunication';
export function GetConnection(): IConnection export function GetConnection(): IConnection
{ {
return Nitro.instance.communication.connection; return GetCommunication().connection;
} }

View File

@ -0,0 +1,6 @@
import { INitro, Nitro } from 'nitro-renderer';
export function GetNitroInstance(): INitro
{
return Nitro.instance;
}

View File

@ -1,6 +1,6 @@
import { Nitro } from 'nitro-renderer'; import { GetNitroInstance } from './GetNitroInstance';
export function GetTicker() export function GetTicker()
{ {
return Nitro.instance.ticker; return GetNitroInstance().ticker;
} }

View File

@ -0,0 +1,7 @@
import { ILinkEventTracker } from 'nitro-renderer';
import { GetNitroInstance } from './GetNitroInstance';
export function RemoveLinkEventTracker(tracker: ILinkEventTracker): void
{
GetNitroInstance().removeLinkEventTracker(tracker);
}

View File

@ -1,6 +1,7 @@
import { IAvatarRenderManager, Nitro } from 'nitro-renderer'; import { IAvatarRenderManager } from 'nitro-renderer';
import { GetNitroInstance } from '../GetNitroInstance';
export function GetAvatarRenderManager(): IAvatarRenderManager export function GetAvatarRenderManager(): IAvatarRenderManager
{ {
return Nitro.instance.avatar; return GetNitroInstance().avatar;
} }

View File

@ -1,7 +1,7 @@
import { Nitro } from 'nitro-renderer';
import { IRoomCameraWidgetManager } from 'nitro-renderer/src/nitro/camera/IRoomCameraWidgetManager'; import { IRoomCameraWidgetManager } from 'nitro-renderer/src/nitro/camera/IRoomCameraWidgetManager';
import { GetNitroInstance } from '../GetNitroInstance';
export function GetRoomCameraWidgetManager(): IRoomCameraWidgetManager export function GetRoomCameraWidgetManager(): IRoomCameraWidgetManager
{ {
return Nitro.instance.cameraManager; return GetNitroInstance().cameraManager;
} }

View File

@ -1,7 +1,11 @@
export * from './AddLinkEventTracker';
export * from './avatar'; export * from './avatar';
export * from './camera'; export * from './camera';
export * from './GetCommunication';
export * from './GetConfiguration'; export * from './GetConfiguration';
export * from './GetConnection'; export * from './GetConnection';
export * from './GetNitroInstance';
export * from './GetTicker'; export * from './GetTicker';
export * from './RemoveLinkEventTracker';
export * from './room'; export * from './room';
export * from './session'; export * from './session';

View File

@ -1,6 +1,7 @@
import { IRoomEngine, Nitro } from 'nitro-renderer'; import { IRoomEngine } from 'nitro-renderer';
import { GetNitroInstance } from '../GetNitroInstance';
export function GetRoomEngine(): IRoomEngine export function GetRoomEngine(): IRoomEngine
{ {
return Nitro.instance.roomEngine; return GetNitroInstance().roomEngine;
} }

View File

@ -1,6 +1,7 @@
import { IRoomSessionManager, Nitro } from 'nitro-renderer'; import { IRoomSessionManager } from 'nitro-renderer';
import { GetNitroInstance } from '../GetNitroInstance';
export function GetRoomSessionManager(): IRoomSessionManager export function GetRoomSessionManager(): IRoomSessionManager
{ {
return Nitro.instance.roomSessionManager; return GetNitroInstance().roomSessionManager;
} }

View File

@ -1,6 +1,7 @@
import { ISessionDataManager, Nitro } from 'nitro-renderer'; import { ISessionDataManager } from 'nitro-renderer';
import { GetNitroInstance } from '../GetNitroInstance';
export function GetSessionDataManager(): ISessionDataManager export function GetSessionDataManager(): ISessionDataManager
{ {
return Nitro.instance.sessionDataManager; return GetNitroInstance().sessionDataManager;
} }

View File

@ -1,8 +1,8 @@
import { NitroEvent } from 'nitro-renderer'; import { NitroEvent } from 'nitro-renderer';
import { Nitro } from 'nitro-renderer/src/nitro/Nitro'; import { GetCommunication } from '../../../../api';
import { CreateEventDispatcherHook } from '../../event-dispatcher.base'; import { CreateEventDispatcherHook } from '../../event-dispatcher.base';
export function useCommunicationEvent(type: string, handler: (event: NitroEvent) => void): void export function useCommunicationEvent(type: string, handler: (event: NitroEvent) => void): void
{ {
CreateEventDispatcherHook(type, Nitro.instance.communication.events, handler); CreateEventDispatcherHook(type, GetCommunication().events, handler);
} }

View File

@ -1,8 +1,8 @@
import { NitroEvent } from 'nitro-renderer'; import { NitroEvent } from 'nitro-renderer';
import { Nitro } from 'nitro-renderer/src/nitro/Nitro'; import { GetConfigurationManager } from '../../../../api';
import { CreateEventDispatcherHook } from '../../event-dispatcher.base'; import { CreateEventDispatcherHook } from '../../event-dispatcher.base';
export function useConfigurationEvent(type: string, handler: (event: NitroEvent) => void): void export function useConfigurationEvent(type: string, handler: (event: NitroEvent) => void): void
{ {
CreateEventDispatcherHook(type, Nitro.instance.core.configuration.events, handler); CreateEventDispatcherHook(type, GetConfigurationManager().events, handler);
} }

View File

@ -1 +1,2 @@
export * from './communication';
export * from './configuration'; export * from './configuration';

View File

@ -1,8 +1,8 @@
import { NitroEvent } from 'nitro-renderer'; import { NitroEvent } from 'nitro-renderer';
import { Nitro } from 'nitro-renderer/src/nitro/Nitro'; import { GetAvatarRenderManager } from '../../../../api';
import { CreateEventDispatcherHook } from '../../event-dispatcher.base'; import { CreateEventDispatcherHook } from '../../event-dispatcher.base';
export function useAvatarEvent(type: string, handler: (event: NitroEvent) => void): void export function useAvatarEvent(type: string, handler: (event: NitroEvent) => void): void
{ {
CreateEventDispatcherHook(type, Nitro.instance.avatar.events, handler); CreateEventDispatcherHook(type, GetAvatarRenderManager().events, handler);
} }

View File

@ -1,8 +1,8 @@
import { NitroEvent } from 'nitro-renderer'; import { NitroEvent } from 'nitro-renderer';
import { Nitro } from 'nitro-renderer/src/nitro/Nitro'; import { GetNitroInstance } from '../../../../api';
import { CreateEventDispatcherHook } from '../../event-dispatcher.base'; import { CreateEventDispatcherHook } from '../../event-dispatcher.base';
export function useCameraEvent(type: string, handler: (event: NitroEvent) => void): void export function useCameraEvent(type: string, handler: (event: NitroEvent) => void): void
{ {
CreateEventDispatcherHook(type, Nitro.instance.cameraManager.events, handler); CreateEventDispatcherHook(type, GetNitroInstance().cameraManager.events, handler);
} }

View File

@ -1,6 +1,5 @@
export * from './avatar'; export * from './avatar';
export * from './camera'; export * from './camera';
export * from './communication';
export * from './localization'; export * from './localization';
export * from './main-event'; export * from './main-event';
export * from './room'; export * from './room';

View File

@ -1,8 +1,8 @@
import { NitroEvent } from 'nitro-renderer'; import { NitroEvent } from 'nitro-renderer';
import { Nitro } from 'nitro-renderer/src/nitro/Nitro'; import { GetNitroInstance } from '../../../../api';
import { CreateEventDispatcherHook } from '../../event-dispatcher.base'; import { CreateEventDispatcherHook } from '../../event-dispatcher.base';
export function useLocalizationEvent(type: string, handler: (event: NitroEvent) => void): void export function useLocalizationEvent(type: string, handler: (event: NitroEvent) => void): void
{ {
CreateEventDispatcherHook(type, Nitro.instance.localization.events, handler); CreateEventDispatcherHook(type, GetNitroInstance().localization.events, handler);
} }

View File

@ -1,12 +1,13 @@
import { Nitro, NitroEvent } from 'nitro-renderer'; import { NitroEvent } from 'nitro-renderer';
import { GetNitroInstance } from '../../../api';
import { CreateEventDispatcherHook, DispatchEventHook } from '../event-dispatcher.base'; import { CreateEventDispatcherHook, DispatchEventHook } from '../event-dispatcher.base';
export function useMainEvent(type: string, handler: (event: NitroEvent) => void): void export function useMainEvent(type: string, handler: (event: NitroEvent) => void): void
{ {
CreateEventDispatcherHook(type, Nitro.instance.events, handler); CreateEventDispatcherHook(type, GetNitroInstance().events, handler);
} }
export function dispatchMainEvent(event: NitroEvent): void export function dispatchMainEvent(event: NitroEvent): void
{ {
DispatchEventHook(Nitro.instance.events, event); DispatchEventHook(GetNitroInstance().events, event);
} }

View File

@ -1,8 +1,8 @@
import { NitroEvent } from 'nitro-renderer'; import { NitroEvent } from 'nitro-renderer';
import { Nitro } from 'nitro-renderer/src/nitro/Nitro'; import { GetRoomEngine } from '../../../../api';
import { CreateEventDispatcherHook } from '../../event-dispatcher.base'; import { CreateEventDispatcherHook } from '../../event-dispatcher.base';
export function useRoomEngineEvent(type: string, handler: (event: NitroEvent) => void): void export function useRoomEngineEvent(type: string, handler: (event: NitroEvent) => void): void
{ {
CreateEventDispatcherHook(type, Nitro.instance.roomEngine.events, handler); CreateEventDispatcherHook(type, GetRoomEngine().events, handler);
} }

View File

@ -1,7 +1,8 @@
import { Nitro, NitroEvent } from 'nitro-renderer'; import { NitroEvent } from 'nitro-renderer';
import { GetRoomSessionManager } from '../../../../api';
import { CreateEventDispatcherHook } from '../../event-dispatcher.base'; import { CreateEventDispatcherHook } from '../../event-dispatcher.base';
export function useRoomSessionManagerEvent(type: string, handler: (event: NitroEvent) => void): void export function useRoomSessionManagerEvent(type: string, handler: (event: NitroEvent) => void): void
{ {
CreateEventDispatcherHook(type, Nitro.instance.roomSessionManager.events, handler); CreateEventDispatcherHook(type, GetRoomSessionManager().events, handler);
} }

View File

@ -1,13 +1,6 @@
export * from './events'; export * from './events';
export * from './events/core'; export * from './events/core';
export * from './events/core/configuration';
export * from './events/nitro'; export * from './events/nitro';
export * from './events/nitro/avatar';
export * from './events/nitro/camera';
export * from './events/nitro/communication';
export * from './events/nitro/localization';
export * from './events/nitro/room';
export * from './events/nitro/session';
export * from './events/ui'; export * from './events/ui';
export * from './messages'; export * from './messages';
export * from './UseMountEffect'; export * from './UseMountEffect';

View File

@ -1,6 +1,6 @@
import { IMessageComposer, IMessageEvent, MessageEvent } from 'nitro-renderer'; import { IMessageComposer, IMessageEvent, MessageEvent } from 'nitro-renderer';
import { Nitro } from 'nitro-renderer/src/nitro/Nitro';
import { useEffect } from 'react'; import { useEffect } from 'react';
import { GetCommunication, GetConnection } from '../../api';
export function CreateMessageHook(eventType: typeof MessageEvent, handler: (event: IMessageEvent) => void): void export function CreateMessageHook(eventType: typeof MessageEvent, handler: (event: IMessageEvent) => void): void
{ {
@ -9,13 +9,13 @@ export function CreateMessageHook(eventType: typeof MessageEvent, handler: (even
//@ts-ignore //@ts-ignore
const event = new eventType(handler); const event = new eventType(handler);
Nitro.instance.communication.registerMessageEvent(event); GetCommunication().registerMessageEvent(event);
return () => Nitro.instance.communication.removeMessageEvent(event); return () => GetCommunication().removeMessageEvent(event);
}, [ eventType, handler ]); }, [ eventType, handler ]);
} }
export function SendMessageHook(event: IMessageComposer<unknown[]>): void export function SendMessageHook(event: IMessageComposer<unknown[]>): void
{ {
Nitro.instance.communication.connection.send(event); GetConnection().send(event);
} }

View File

@ -1,6 +1,6 @@
import { Nitro } from 'nitro-renderer'; import { GetNitroInstance } from '../api';
export function LocalizeBadgeName(key: string): string export function LocalizeBadgeName(key: string): string
{ {
return Nitro.instance.localization.getBadgeName(key); return GetNitroInstance().localization.getBadgeName(key);
} }

View File

@ -1,6 +1,6 @@
import { Nitro } from 'nitro-renderer'; import { GetNitroInstance } from '../api';
export function LocalizeText(key: string, parameters: string[] = null, replacements: string[] = null): string export function LocalizeText(key: string, parameters: string[] = null, replacements: string[] = null): string
{ {
return Nitro.instance.getLocalizationWithParameters(key, parameters, replacements); return GetNitroInstance().getLocalizationWithParameters(key, parameters, replacements);
} }