internal static bool IsValidDeviceID(string deviceID)
        {
            if (string.IsNullOrEmpty(deviceID))
            {
                ASF.ArchiLogger.LogNullError(nameof(deviceID));

                return(false);
            }

            // This one is optional
            int deviceIdentifierIndex = deviceID.IndexOf(':');

            if (deviceIdentifierIndex >= 0)
            {
                deviceIdentifierIndex++;

                if (deviceID.Length <= deviceIdentifierIndex)
                {
                    return(false);
                }

                deviceID = deviceID.Substring(deviceIdentifierIndex);
            }

            // Dashes are optional in the ID, strip them off for comparison
            string hash = deviceID.Replace("-", "");

            return((hash.Length > 0) && Utilities.IsValidHexadecimalString(hash));
        }
        internal static bool IsValidDeviceID(string deviceID)
        {
            if (string.IsNullOrEmpty(deviceID))
            {
                ASF.ArchiLogger.LogNullError(nameof(deviceID));

                return(false);
            }

            // To the best of my knowledge, Steam uses android identifier even on iOS and other devices right now
            // If we ever need to correct this, we also need to clean up other places
            const string deviceIdentifier = "android:";

            if (!deviceID.StartsWith(deviceIdentifier, StringComparison.Ordinal) || (deviceID.Length != deviceIdentifier.Length + 36))
            {
                return(false);
            }

            string hash = deviceID.Substring(deviceIdentifier.Length).Replace("-", "");

            return((hash.Length == 32) && Utilities.IsValidHexadecimalString(hash));
        }