Exemplo n.º 1
0
        public void CreateNewList(
            string listTitle,
            string optionalDescription,
            bool isCollaborative,
            Action <CompactList> success,
            Action <Exception> error)
        {
            List <string> components = new List <string>
            {
                "name",
                listTitle
            };

            if (!string.IsNullOrEmpty(optionalDescription))
            {
                components.Add("description");
                components.Add(optionalDescription);
            }
            if (isCollaborative)
            {
                components.Add("collaborative");
                components.Add("true"); // or "true" as docs say?
            }

            var uuri = FourSquareWebClient.BuildFourSquareUri(
                "lists/add",
                GeoMethodType.Optional,

                components.ToArray());

            var r = new FourSquareServiceRequest
            {
                Uri        = uuri.Uri,
                PostString = string.Empty,
            };

            var token = CentralStatusManager.Instance.BeginShowEllipsisMessage("Creating new list");

            r.CallAsync(
                (str, ex) =>
            {
                Exception exx = ex;

                try
                {
                    FourSquare.IgnoreNextNotification = true;
                    var json = FourSquareDataLoaderBase <LoadContext> .ProcessMetaAndNotificationsReturnJson(str);
                    FourSquare.IgnoreNextNotification = false;

                    var vjson      = json["list"];
                    CompactList cl = null;
                    if (vjson != null)
                    {
                        cl = CompactList.ParseJson(vjson);
                    }

                    success(cl);

                    token.CompleteWithAcknowledgement();
                }
                catch (Exception e)
                {
                    exx = e;
                }

                if (exx != null)
                {
                    error(exx);
                    StatusToken.TryComplete(ref token);
                }
            });
        }