public void FormatAndUpdate(PresenceState state) { var formatter = Provider.App.GetFormatter(); var info = formatter.StateToInfo(state); var rpcPresence = info.ToRpc(); DiscordRpc.UpdatePresence(ref rpcPresence); }
/// <summary> /// Converts <see cref="PresenceState"/> to a <see cref="PresenceInfo"/> based on the user's /// customization configuration. /// </summary> public PresenceInfo StateToInfo(PresenceState state) { var info = new PresenceInfo(); var preferences = App.CachedPreferences; if (state.OverrideText != null) { (info.Detail, info.State) = state.OverrideText.Value; } else { (info.Detail, info.State) = preferences.FillFieldsByFunction(key => state.FieldValues[key]); (info.SmallImageKey, info.SmallImageText) = state.IconValues[preferences.Icon]; } (info.LargeImageKey, info.LargeImageText) = state.ImageValue; return(info); }
/// <summary> /// Emits a new state. /// </summary> public void PushState(PresenceState presenceState) => StateReady?.Invoke(this, presenceState);