``` ~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js ```
110 lines
2.4 KiB
TypeScript
110 lines
2.4 KiB
TypeScript
import {
|
|
DESKTOP_COMPONENT_START_WIDTH,
|
|
DESKTOP_LARGE_COMPONENT_START_WIDTH,
|
|
TABLET_COMPONENT_START_WIDTH,
|
|
} from "../../CharacterSheet/config";
|
|
import * as actionTypes from "../actions/appEnv/actionTypes";
|
|
import { AppEnvAction } from "../actions/appEnv/typings";
|
|
import { AppEnvState } from "../stores/typings";
|
|
|
|
export enum StyleSizeTypeEnum {
|
|
NONE = 0,
|
|
MOBILE = 1,
|
|
TABLET = 2,
|
|
DESKTOP = 3,
|
|
DESKTOP_LARGE = 4,
|
|
}
|
|
|
|
export const initialEnvState: AppEnvState = {
|
|
authEndpoint: null,
|
|
username: null,
|
|
userId: -1,
|
|
userRoles: [],
|
|
characterId: null,
|
|
characterEndpoint: "",
|
|
characterServiceBaseUrl: null,
|
|
isMobile: true,
|
|
isReadonly: true,
|
|
canOverrideReadOnly: false,
|
|
redirect: "",
|
|
diceEnabled: false,
|
|
diceFeatureConfiguration: {
|
|
enabled: true,
|
|
menu: true,
|
|
assetBaseLocation: "",
|
|
trackingId: "",
|
|
apiEndpoint: "",
|
|
},
|
|
gameLog: {
|
|
isOpen: false,
|
|
lastMessageTime: 0,
|
|
apiEndpoint: "",
|
|
ddbApiEndpoint: "",
|
|
},
|
|
dimensions: {
|
|
styleSizeType: StyleSizeTypeEnum.NONE,
|
|
window: {
|
|
width: 0,
|
|
height: 0,
|
|
},
|
|
sheet: {
|
|
width: 0,
|
|
height: 0,
|
|
},
|
|
},
|
|
characterSlots: {
|
|
characterSlotLimit: null,
|
|
activeCharacterCount: 0,
|
|
lockedCharacterCount: 0,
|
|
allCharactersLocked: false,
|
|
},
|
|
};
|
|
function appEnv(
|
|
state: AppEnvState = initialEnvState,
|
|
action: AppEnvAction
|
|
): AppEnvState {
|
|
switch (action.type) {
|
|
case actionTypes.DATA_SET:
|
|
return {
|
|
...state,
|
|
...action.payload,
|
|
};
|
|
|
|
case actionTypes.MOBILE_SET:
|
|
return {
|
|
...state,
|
|
isMobile: action.payload.isMobile,
|
|
};
|
|
|
|
case actionTypes.DIMENSIONS_SET: {
|
|
let styleSizeType: StyleSizeTypeEnum = StyleSizeTypeEnum.NONE;
|
|
const windowWidth = action.payload.dimensions.window.width;
|
|
|
|
if (windowWidth >= DESKTOP_LARGE_COMPONENT_START_WIDTH) {
|
|
styleSizeType = StyleSizeTypeEnum.DESKTOP_LARGE;
|
|
} else if (windowWidth >= DESKTOP_COMPONENT_START_WIDTH) {
|
|
styleSizeType = StyleSizeTypeEnum.DESKTOP;
|
|
} else if (windowWidth >= TABLET_COMPONENT_START_WIDTH) {
|
|
styleSizeType = StyleSizeTypeEnum.TABLET;
|
|
} else {
|
|
styleSizeType = StyleSizeTypeEnum.MOBILE;
|
|
}
|
|
|
|
return {
|
|
...state,
|
|
dimensions: {
|
|
...action.payload.dimensions,
|
|
styleSizeType,
|
|
},
|
|
};
|
|
}
|
|
|
|
default:
|
|
// not implemented
|
|
}
|
|
|
|
return state;
|
|
}
|
|
|
|
export default appEnv;
|