mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
124 lines
4.4 KiB
C#
124 lines
4.4 KiB
C#
// 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;
|
|
|
|
public static float MinRating => s_minRating;
|
|
|
|
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)
|
|
this.OnReviewPostFailed(HRESULT._ZUNE_E_ADD_REVIEW_FAILED);
|
|
else
|
|
Service.Instance.PostAppReview(mediaId, title, text, (int)rating, new AsyncCompleteHandler(this.OnPostAddReviewComplete));
|
|
}
|
|
|
|
private void OnPostAddReviewComplete(HRESULT hr) => Application.DeferredInvoke(new DeferredInvokeHandler(this.HandleAddReviewResponse), hr, DeferredInvokePriority.Normal);
|
|
|
|
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)
|
|
return;
|
|
Application.DeferredInvoke(new DeferredInvokeHandler(this.HandleGetAccountComplete), string.Empty, DeferredInvokePriority.Normal);
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
private void OnGetAccountError(HRESULT hr, ServiceError serviceError) => Application.DeferredInvoke(new DeferredInvokeHandler(this.HandleGetAccountComplete), string.Empty, DeferredInvokePriority.Normal);
|
|
|
|
private void HandleGetAccountComplete(object args)
|
|
{
|
|
this.LastAuthor = args as string;
|
|
this.OnReviewPosted();
|
|
}
|
|
|
|
private void OnReviewPosted()
|
|
{
|
|
if (this.ReviewPosted != null)
|
|
this.ReviewPosted(this, null);
|
|
this.FirePropertyChanged("ReviewPosted");
|
|
}
|
|
|
|
private void OnReviewPostFailed(HRESULT hr)
|
|
{
|
|
this.LastError = hr;
|
|
if (this.ReviewPostFailed != null)
|
|
this.ReviewPostFailed(this, null);
|
|
this.FirePropertyChanged("ReviewPostFailed");
|
|
}
|
|
}
|
|
}
|