﻿B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=10.6
@EndOfDesignText@
Sub Class_Globals
	Private IdCheckRatingCount As Int = 1
	Private ratingCount As Int
	Private ratingValue As Double
	Public IsFirstChecking As Boolean
End Sub

'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize
	IsFirstChecking = False
	SetDefaults
End Sub

Public Sub CheckFistRatingCount
	IsFirstChecking = True
	CheckInternetConnection(IdCheckRatingCount)
End Sub

Public Sub CheckNextRatingCount
	IsFirstChecking = False
	CheckInternetConnection(IdCheckRatingCount)
End Sub

Private Sub CheckInternetConnection(IdConnection As Int)
	Dim job As HttpJob
	job.Initialize(IdConnection, Me)
	job.Download("https://www.google.com")
End Sub

Private Sub DownloadStorePage
	Dim job As HttpJob
	job.Initialize("AppRating", Me)
	job.Download("https://play.google.com/store/apps/details?id=" & Application.PackageName)
End Sub

Private Sub JobDone(job As HttpJob)
	Dim res As String
	
	If job.Success Then
		res = job.GetString
		'Log("res=" & res)

		Select job.JobName
			'****** Version ******
			Case IdCheckRatingCount
				DownloadStorePage

			Case "AppRating"
				'Sicherstellen dass das String "aggregateRating" enthalten ist, wenn nicht, dann sind keine Bewertungen vorhanden.
				Dim index1 As Int = res.IndexOf("aggregateRating")
				If index1 > 0 Then
					Dim aggregateRating As String = res.SubString2(index1 + 18, res.IndexOf2("}", index1 + 18)).Replace(",",":")
					Log("aggregateRating=" & aggregateRating)
					Dim str() As String = Regex.Split(":", aggregateRating)
					If str.Length > 5 Then
						ratingValue = str(3).Replace(QUOTE,"")
						ratingCount = str(5).Replace(QUOTE,"")
						Log("ratingCount=" & ratingCount)
						AppReviewResult(ratingCount, ratingValue)
					End If
				End If
		End Select
	Else
		#if DEBUG
			ToastMessageShow("ERROR!" & CRLF & job.ErrorMessage, True)
		#End If
	End If
	job.Release
End Sub

Private Sub AppReviewResult(Count As Int, Value As Double)
	Log("Count=" & Count & " IsFirstChecking=" & IsFirstChecking)
	Log("intRatingCount= " & Starter.manager.getString("intRatingCount"))
	Log("intRatingValue= " & Starter.manager.getString("intRatingValue"))
	
	Starter.manager.setBoolean("IsFirstChecking", IsFirstChecking)
	If IsFirstChecking Then
		Starter.manager.SetString("intRatingCount", Count)
		Starter.manager.SetString("intRatingValue", Value)
	Else
		If Count > Starter.manager.getString("intRatingCount") And Value > Starter.manager.getString("intRatingValue") Then			
			Starter.manager.setBoolean("IsAlreadyRated", True)
			Starter.manager.SetString("intRatingCount", Count)
			Starter.manager.SetString("intRatingValue", Value)
		End If
	End If
End Sub

Public Sub RateByGooglePlay
	Dim fURI As String
	fURI = "market://details?id=" & Application.PackageName
	Dim Market As Intent
	Market.Initialize(Market.ACTION_VIEW,fURI)
	StartActivity (Market)
End Sub

Private Sub SetDefaults	
	If Not(Starter.manager.ExistKey("IsFirstChecking")) Then Starter.manager.SetBoolean("IsFirstChecking", False)
	If Not(Starter.manager.ExistKey("IsAlreadyRated")) Then Starter.manager.SetBoolean("IsAlreadyRated", False)
	If Not(Starter.manager.ExistKey("intRatingCount")) Then Starter.manager.SetString("intRatingCount", 0)
	If Not(Starter.manager.ExistKey("intRatingValue")) Then Starter.manager.SetString("intRatingValue", 0)
End Sub
