redesignedVersion function

StoreVersionAndUrl? redesignedVersion(
  1. Document response,
  2. String url
)

Return StoreVersionAndUrl from Redesigned Play Store results. Created by upgrader package

Implementation

StoreVersionAndUrl? redesignedVersion(dom.Document response, String url) {
  try {
    // ignore: prefer_single_quotes
    const patternName = ",\"name\":\"";
    // ignore: prefer_single_quotes
    const patternVersion = ",[[[\"";
    // ignore: prefer_single_quotes
    const patternCallback = "AF_initDataCallback";
    // ignore: prefer_single_quotes
    const patternEndOfString = "\"";

    // ignore: prefer_single_quotes
    final scripts = response.getElementsByTagName("script");
    final infoElements = scripts.where((element) => element.text.contains(patternName));
    final additionalInfoElements = scripts.where((element) => element.text.contains(patternCallback));
    final additionalInfoElementsFiltered = additionalInfoElements.where((element) => element.text.contains(patternVersion));

    final nameElement = infoElements.first.text;
    final storeNameStartIndex = nameElement.indexOf(patternName) + patternName.length;
    final storeNameEndIndex = storeNameStartIndex + nameElement.substring(storeNameStartIndex).indexOf(patternEndOfString);
    final storeName = nameElement.substring(storeNameStartIndex, storeNameEndIndex);

    // ignore: prefer_single_quotes
    final versionElement = additionalInfoElementsFiltered.where((element) => element.text.contains("\"$storeName\"")).first.text;
    final storeVersionStartIndex = versionElement.lastIndexOf(patternVersion) + patternVersion.length;
    final storeVersionEndIndex = storeVersionStartIndex + versionElement.substring(storeVersionStartIndex).indexOf(patternEndOfString);
    final storeVersion = versionElement.substring(storeVersionStartIndex, storeVersionEndIndex);

    // storeVersion might be: 'Varies with device', which is not a valid version.
    return StoreVersionAndUrl(storeVersion, url);
  } catch (e) {
    if (kDebugMode) {
      print('upgrader: PlayStoreResults.redesignedVersion exception: $e');
    }
  }

  return null;
}