/// <summary>
        /// Receive all streams in the account.
        /// </summary>
        private void UpdateStreamList(object sender, RoutedEventArgs e)
        {
            if (RestApi == null && ApiToken == null)
            {
                Status.AddError("Not logged in");
                return;
            }

            Task.Run(() => SpeckleStreamManager.GetStreams(RestApi, ApiToken)).ContinueWith(res =>
            {
                Application.Current.Dispatcher.BeginInvoke(
                    DispatcherPriority.Background,
                    new Action(() =>
                {
                    List <Tuple <string, string> > streams = res.Result;
                    if (streams != null)
                    {
                        streams.Reverse();
                        StreamList.Items.Clear();
                        foreach (Tuple <string, string> t in streams)
                        {
                            StreamList.Items.Add(t);
                        }
                    }
                }
                               ));
            });
        }
        private void SenderStreams_CloneStreams(object sender, RoutedEventArgs e)
        {
            if (RestApi == null && ApiToken == null)
            {
                Status.AddError("Not logged in");
                return;
            }

            var cell = SenderStreams.CurrentCell.Item;

            if (cell.GetType() == typeof(Tuple <string, string>))
            {
                string streamID = (cell as Tuple <string, string>).Item2;

                Task.Run(() => SpeckleStreamManager.CloneStream(RestApi, ApiToken, streamID)).ContinueWith(res =>
                {
                    Application.Current.Dispatcher.BeginInvoke(
                        DispatcherPriority.Background,
                        new Action(() =>
                    {
                        try
                        {
                            Status.AddMessage("Cloned to: " + res.Result);
                        }
                        catch { Status.AddError("Could not clone " + streamID); }
                    }
                                   ));
                });
            }
        }
        public override List <StreamState> GetStreamsInFile()
        {
            List <string> strings = SpeckleStreamManager.GetSpeckleStreams();

            return(strings.Select(s => JsonConvert.DeserializeObject <StreamState>(s)).ToList());
        }
 public override void PersistAndUpdateStreamInFile(StreamState state)
 {
     SpeckleStreamManager.UpdateSpeckleStream(state.Stream.id, JsonConvert.SerializeObject(state));
 }
 public override void RemoveStreamFromFile(string streamId)
 {
     SpeckleStreamManager.RemoveSpeckleStream(streamId);
 }
 public override void AddNewStream(StreamState state)
 {
     SpeckleStreamManager.AddSpeckleStream(state.Stream.id, JsonConvert.SerializeObject(state));
 }