Skip to content

Instantly share code, notes, and snippets.

@habermeier
Created February 8, 2015 03:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save habermeier/266a4c74c04c197daaf7 to your computer and use it in GitHub Desktop.
Save habermeier/266a4c74c04c197daaf7 to your computer and use it in GitHub Desktop.
wannago_crash source
using Cirrious.CrossCore;
using Cirrious.MvvmCross.ViewModels;
using Client.Core.Services;
using System.Threading.Tasks;
using Client.Core.Models;
using Client.Api.Models;
namespace Client.Core.ViewModels
{
public class AddingPlaceCaptionViewModel : BaseViewModel
{
private IPlaceUpsertService upsertService;
public AddingPlaceCaptionViewModel(IPlaceUpsertService upsertService)
{
this.upsertService = upsertService;
}
#region Commands
public IMvxCommand DoneCommand {
get {
return new MvxCommand(async () => {
await Done().ConfigureAwait(false);
});
}
}
#endregion
#region Properties
private string caption;
public string Caption
{
get { return caption; }
set { caption = value; RaisePropertyChanged(() => Caption); }
}
private string readMoreURL;
public string ReadMoreURL
{
get { return readMoreURL; }
set { readMoreURL = value; RaisePropertyChanged(() => ReadMoreURL); }
}
private bool isPowerUser;
public bool IsPowerUser
{
get { return isPowerUser; }
set { isPowerUser = value; RaisePropertyChanged(() => IsPowerUser); }
}
private Image image = new Image();
public Image Image {
get { return image; }
set {
image = value;
RaisePropertyChanged(() => Image);
}
}
#endregion
PlaceBundle placeBundle;
public async Task Init(PlaceBundleRequest placeBundleRequest) {
placeBundle = await dataService
.PlaceBundleByRequestAsync(placeBundleRequest)
.ConfigureAwait(false);
if (placeBundle == null) {
Mvx.TaggedError("AddingPlaceCaptionViewModel.Init", "Unable to complete placeBundleRequest");
return;
}
Title = placeBundle.Place.Name;
Image = placeBundle.Image;
Caption = "";
ReadMoreURL = "";
IsPowerUser = await dataService.OwnUserIsPowerUserAsync().ConfigureAwait(false);
}
async Task Done()
{
var request = new UpsertRequest() {
ResourceHandle = placeBundle.Place.ResourceHandle,
Mode = placeBundle.UpsertMode,
PlaceName = placeBundle.Place.Name,
Description = Caption,
ReferenceURL = ReadMoreURL,
LovedIt = placeBundle.Classification == PlaceUserClassification.LoveIt,
ImageURL = placeBundle.Image.Medium
};
IsBusy = true;
bool okay = await upsertService
.AddAsync(request)
.ConfigureAwait(false);
if (!okay) {
return;
}
IsBusy = false;
Close(this);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment