Files

123 lines
4.4 KiB
C#
Raw Permalink Normal View History

2021-02-21 21:52:41 -06:00
// Decompiled with JetBrains decompiler
// Type: ZuneUI.AppReviewHelper
// Assembly: ZuneShell, Version=4.7.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
// MVID: FC8028F3-A47B-4FB4-B35B-11D1752D8264
// Assembly location: C:\Program Files\Zune\ZuneShell.dll
using Microsoft.Iris;
using Microsoft.Zune.Service;
using Microsoft.Zune.Util;
using System;
namespace ZuneUI
{
public class AppReviewHelper : NotifyPropertyChangedImpl
{
private static float s_maxRating = 10f;
private static float s_minRating = 0.0f;
private HRESULT _lastError;
private string _lastAuthor;
private AccountManagement _accountManagement;
public AppReviewHelper() => this.Reset();
public event EventHandler ReviewPosted;
public event EventHandler ReviewPostFailed;
public static float MaxRating => s_maxRating;
2021-02-21 21:52:41 -06:00
public static float MinRating => s_minRating;
2021-02-21 21:52:41 -06:00
public HRESULT LastError
{
get => this._lastError;
private set
{
if (!(this._lastError != value))
return;
this._lastError = value;
this.FirePropertyChanged(nameof(LastError));
}
}
public string LastAuthor
{
get => this._lastAuthor;
private set
{
if (!(this._lastAuthor != value))
return;
this._lastAuthor = value;
this.FirePropertyChanged(nameof(LastAuthor));
}
}
public void AddReview(Guid mediaId, float rating, string title, string text)
{
if (mediaId == Guid.Empty || rating < (double)MinRating || rating > (double)MaxRating)
2021-02-21 21:52:41 -06:00
this.OnReviewPostFailed(HRESULT._ZUNE_E_ADD_REVIEW_FAILED);
else
Service.Instance.PostAppReview(mediaId, title, text, (int)rating, new AsyncCompleteHandler(this.OnPostAddReviewComplete));
2021-02-21 21:52:41 -06:00
}
private void OnPostAddReviewComplete(HRESULT hr) => Application.DeferredInvoke(new DeferredInvokeHandler(this.HandleAddReviewResponse), hr, DeferredInvokePriority.Normal);
2021-02-21 21:52:41 -06:00
private void Reset()
{
this.LastAuthor = string.Empty;
this.LastError = HRESULT._S_OK;
}
private void HandleAddReviewResponse(object args)
{
HRESULT? nullable = (HRESULT?)args;
if (!nullable.HasValue)
this.OnReviewPostFailed(HRESULT._ZUNE_E_ADD_REVIEW_FAILED);
else if (nullable.Value.IsSuccess)
this.GetAuthorName();
else
this.OnReviewPostFailed(nullable.Value);
}
private void GetAuthorName()
{
if (this._accountManagement == null)
this._accountManagement = new AccountManagement();
if (!this._accountManagement.GetAccount(null, new GetAccountCompleteCallback(this.OnGetAccountSuccess), new AccountManagementErrorCallback(this.OnGetAccountError)).IsError)
2021-02-21 21:52:41 -06:00
return;
Application.DeferredInvoke(new DeferredInvokeHandler(this.HandleGetAccountComplete), string.Empty, DeferredInvokePriority.Normal);
2021-02-21 21:52:41 -06:00
}
private void OnGetAccountSuccess(AccountUser accountUser)
{
string str = string.Empty;
if (accountUser != null)
str = string.Format(Shell.LoadString(StringId.IDS_ACCOUNT_CREATION_NAME_FORMAT), accountUser.FirstName, accountUser.LastName);
Application.DeferredInvoke(new DeferredInvokeHandler(this.HandleGetAccountComplete), str, DeferredInvokePriority.Normal);
2021-02-21 21:52:41 -06:00
}
private void OnGetAccountError(HRESULT hr, ServiceError serviceError) => Application.DeferredInvoke(new DeferredInvokeHandler(this.HandleGetAccountComplete), string.Empty, DeferredInvokePriority.Normal);
2021-02-21 21:52:41 -06:00
private void HandleGetAccountComplete(object args)
{
this.LastAuthor = args as string;
this.OnReviewPosted();
}
private void OnReviewPosted()
{
if (this.ReviewPosted != null)
this.ReviewPosted(this, null);
2021-02-21 21:52:41 -06:00
this.FirePropertyChanged("ReviewPosted");
}
private void OnReviewPostFailed(HRESULT hr)
{
this.LastError = hr;
if (this.ReviewPostFailed != null)
this.ReviewPostFailed(this, null);
2021-02-21 21:52:41 -06:00
this.FirePropertyChanged("ReviewPostFailed");
}
}
}