package api import ( "fmt" "strings" ) // appState represents if the app is in foreground, background or some other state type appState string func (a appState) String() string { return string(a) } // Specific app states // see https://facebook.github.io/react-native/docs/appstate.html const ( appStateForeground = appState("active") // these constant values are kept in sync with React Native appStateBackground = appState("background") appStateInactive = appState("inactive") appStateInvalid = appState("") ) // validAppStates returns an immutable set of valid states. func validAppStates() []appState { return []appState{appStateInactive, appStateBackground, appStateForeground} } // parseAppState creates AppState from a string func parseAppState(stateString string) (appState, error) { // a bit of cleaning up stateString = strings.ToLower(strings.TrimSpace(stateString)) for _, state := range validAppStates() { if stateString == state.String() { return state, nil } } return appStateInvalid, fmt.Errorf("could not parse app state: %s", stateString) }