internal static OSEmailSubscriptionStateChanges ParseOSEmailSubscriptionStateChanges(OneSignalPlatform platform, string stateChangesJSONString)
    {
        var stateChangesJson = Json.Deserialize(stateChangesJSONString) as Dictionary <string, object>;

        var emailStateChanges = new OSEmailSubscriptionStateChanges();

        emailStateChanges.to   = platform.ParseOSEmailSubscriptionState(stateChangesJson["to"]);
        emailStateChanges.from = platform.ParseOSEmailSubscriptionState(stateChangesJson["from"]);

        return(emailStateChanges);
    }
    internal static OSPermissionSubscriptionState ParsePermissionSubscriptionState(OneSignalPlatform platform, string jsonStr)
    {
        var stateDict = Json.Deserialize(jsonStr) as Dictionary <string, object>;

        var state = new OSPermissionSubscriptionState();

        state.permissionStatus   = platform.ParseOSPermissionState(stateDict["permissionStatus"]);
        state.subscriptionStatus = platform.ParseOSSubscriptionState(stateDict["subscriptionStatus"]);

        if (stateDict.ContainsKey("emailSubscriptionStatus"))
        {
            state.emailSubscriptionStatus = platform.ParseOSEmailSubscriptionState(stateDict["emailSubscriptionStatus"]);
        }

        return(state);
    }