diff --git a/src/App.scss b/src/App.scss
index 0563da2..9b05e7b 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -21,7 +21,7 @@ $toolbar-height: 55px;
$achievement-width: 375px;
$achievement-height: 405px;
-$avatar-editor-width: 545px;
+$avatar-editor-width: 520px;
$avatar-editor-height: 553px;
$backgrounds-width: 534px;
diff --git a/src/App.tsx b/src/App.tsx
index e242393..80e2084 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,5 +1,6 @@
import { ConfigurationEvent, GetAssetManager, HabboWebTools, LegacyExternalInterface, Nitro, NitroCommunicationDemoEvent, NitroConfiguration, NitroEvent, NitroLocalizationEvent, NitroVersion, RoomEngineEvent } from '@nitrots/nitro-renderer';
import { AnimatePresence, motion } from 'framer-motion';
+import { BadgeProvider } from './common/layout/BadgeContext';
import { Base } from './common';
import { FC, useCallback, useEffect, useState } from 'react';
import { GetCommunication, GetConfiguration, GetNitroInstance, GetUIVersion } from './api';
@@ -7,6 +8,7 @@ import { LoadingView } from './components/loading/LoadingView';
import { MainView } from './components/main/MainView';
import { useConfigurationEvent, useLocalizationEvent, useMainEvent, useRoomEngineEvent } from './hooks';
+
NitroVersion.UI_VERSION = GetUIVersion();
export const App: FC<{}> = props =>
@@ -131,15 +133,18 @@ export const App: FC<{}> = props =>
return (
- { (!isReady || isError) &&
- }
-
- { isReady && (
-
-
- )}
-
-
+
+ { (!isReady || isError) &&
+ }
+
+ { isReady && (
+
+
+
+ )}
+
+
+
);
-}
+}
\ No newline at end of file
diff --git a/src/common/layout/BadgeContext.tsx b/src/common/layout/BadgeContext.tsx
new file mode 100644
index 0000000..d156f9b
--- /dev/null
+++ b/src/common/layout/BadgeContext.tsx
@@ -0,0 +1,198 @@
+import { BadgeImageReadyEvent, NitroSprite, TextureUtils } from '@nitrots/nitro-renderer';
+import { createContext, FC, useContext, useEffect, useState } from 'react';
+import { GetSessionDataManager } from '../../api';
+
+interface BadgeContextType
+{
+ badgeImages: Map;
+ requestBadge: (badgeCode: string, isGroup: boolean) => Promise;
+ updateBadgeImage: (badgeCode: string, image: HTMLImageElement) => void;
+}
+
+const BadgeContext = createContext({
+ badgeImages: new Map(),
+ requestBadge: async () =>
+ {
+ console.warn('BadgeContext: Default requestBadge called - BadgeProvider not initialized');
+ throw new Error('BadgeProvider not initialized - ensure BadgeProvider is wrapped around the app');
+ },
+ updateBadgeImage: () =>
+ {
+ console.warn('BadgeContext: Default updateBadgeImage called - BadgeProvider not initialized');
+ throw new Error('BadgeProvider not initialized - ensure BadgeProvider is wrapped around the app');
+ },
+});
+
+export const BadgeProvider: FC<{}> = ({ children }) =>
+{
+ const [ badgeImages, setBadgeImages ] = useState