Skip to content

Commit 1496983

Browse files
committed
refactor setupFormatsProvider in test viewer
1 parent 593c812 commit 1496983

File tree

1 file changed

+27
-22
lines changed

1 file changed

+27
-22
lines changed

apps/test-viewer/src/components/Viewer.tsx

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -90,29 +90,34 @@ function onIModelConnected(imodel: IModelConnection) {
9090
setTimeout(() => {
9191
IModelConnection.onOpen.raiseEvent(imodel);
9292
}, 1000);
93-
94-
imodel.schemaContext.getSchema(new SchemaKey("AecUnits", SchemaMatchType.Latest)).then((schema) => {
95-
if (schema) {
96-
const schemaFormatsProvider = new SchemaFormatsProvider(imodel.schemaContext, IModelApp.quantityFormatter.activeUnitSystem);
97-
const removeListener = IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.addListener((args) => {
98-
schemaFormatsProvider.unitSystem = args.system;
99-
});
100-
101-
const schemaUnitsProvider = new SchemaUnitProvider(imodel.schemaContext);
102-
IModelApp.quantityFormatter.unitsProvider = schemaUnitsProvider;
103-
IModelApp.formatsProvider = schemaFormatsProvider;
104-
console.log("Registered SchemaFormatsProvider, SchemaUnitProvider");
105-
106-
IModelConnection.onClose.addOnce(() => {
107-
removeListener();
108-
IModelApp.resetFormatsProvider();
109-
void IModelApp.quantityFormatter.resetToUseInternalUnitsProvider();
110-
console.log("Unregistered SchemaFormatsProvider, SchemaUnitProvider");
111-
});
93+
const setupFormatsProvider = async () => {
94+
try {
95+
const schema = await imodel.schemaContext.getSchema(new SchemaKey("AecUnits", SchemaMatchType.Latest));
96+
if (schema) {
97+
const schemaFormatsProvider = new SchemaFormatsProvider(imodel.schemaContext, IModelApp.quantityFormatter.activeUnitSystem);
98+
const removeListener = IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.addListener((args) => {
99+
schemaFormatsProvider.unitSystem = args.system;
100+
});
101+
102+
const schemaUnitsProvider = new SchemaUnitProvider(imodel.schemaContext);
103+
IModelApp.quantityFormatter.unitsProvider = schemaUnitsProvider;
104+
IModelApp.formatsProvider = schemaFormatsProvider;
105+
console.log("Registered SchemaFormatsProvider, SchemaUnitProvider");
106+
107+
IModelConnection.onClose.addOnce(() => {
108+
removeListener();
109+
IModelApp.resetFormatsProvider();
110+
void IModelApp.quantityFormatter.resetToUseInternalUnitsProvider();
111+
console.log("Unregistered SchemaFormatsProvider, SchemaUnitProvider");
112+
});
113+
}
114+
} catch {
115+
console.error("No common AecUnits schema found in iModel, not registering a SchemaFormatsProvider");
112116
}
113-
}).catch((_) => {
114-
console.error("No common AecUnits schema found in iModel, not registering a SchemaFormatsProvider");
115-
});
117+
}
118+
119+
// Only load a schema formats provider if the iModel has the AecUnits schema
120+
void setupFormatsProvider();
116121
}
117122

118123
function useIModelInfo() {

0 commit comments

Comments
 (0)