// When the Update button is clicked, update our published Message public void UpdateMessage() { // Retrieves updated data from UI context.Fetch(); // Remove our last message from MonoTouch Dialog if (myMessage != null) { RemoveMonkeyMessage(myMessage); } // Create new Nearby message to publish with the list choices myMessage = new EmotionMessage { UserId = userId, Name = dialog.Names.ElementAt(dialog.CurrentName), Species = dialog.Species.ElementAt(dialog.CurrentSpecie), Emotion = dialog.Emotions.ElementAt(dialog.CurrentEmotion) }; // Unpublish message, if we already published a message Unpublish(myMessage); // Publish the new message Publish(myMessage); }
public override void OnLost(NearbyMessage message) { base.OnLost(message); var emotionMsg = EmotionMessage.Deserialize(message.GetContent()); OnLostHandler?.Invoke(emotionMsg); }
// To unpublish a message you need to dispose the published message void Unpublish(EmotionMessage emotionMessage) { if (AppDelegate.PublishedMessage == null) { return; } AppDelegate.PublishedMessage.Dispose(); AppDelegate.PublishedMessage = null; RemoveMonkeyMessage(emotionMessage); }
// Remove monkey message from MonoTouch Dialog void RemoveMonkeyMessage(EmotionMessage message) { var index = monkeysMessages.IndexOf(message); if (index < 0) { return; } monkeysMessages.RemoveAt(index); messagesSection.Remove(index); Root.Reload(messagesSection, UITableViewRowAnimation.Fade); }
// Publishes a new Message to the Nearby API async Task Publish() { // Wait for connection if (!await IsConnected()) { return; } // Create new Nearby message to publish with the spinner choices var emotionMessage = new EmotionMessage { UserId = userId, Name = spinnerName.SelectedItem.ToString(), Species = spinnerSpecies.SelectedItem.ToString(), Emotion = spinnerEmotion.SelectedItem.ToString() }; // Remove any existing messages for this user from our list // Add the new message and update the dataset adapter.Messages.RemoveAll(m => m.UserId == userId); adapter.Messages.Add(emotionMessage); adapter.NotifyDataSetChanged(); // If we already published a message, unpublish it first if (publishedMessage != null) { await Unpublish(); } // Create a new nearby message with our serialized object publishedMessage = new NearbyMessage(emotionMessage.Serialize()); // Publish our new message var status = await NearbyClass.Messages.PublishAsync(googleApiClient, publishedMessage); if (!status.IsSuccess) { LogMessage(status.StatusMessage); } }
// Publish the receive message void Publish(EmotionMessage emotionMessage) { AppDelegate.PublishedMessage = manager.Publication(Message.Create(NSData.FromArray(emotionMessage.Serialize()))); AddMonkeyMessage(emotionMessage); }
// Add monkey message to MonoTouch Dialog void AddMonkeyMessage(EmotionMessage message) { monkeysMessages.Add(message); messagesSection.Add(new StringElement(message.ToString())); Root.Reload(messagesSection, UITableViewRowAnimation.Fade); }
// Method to be called when a monkey unpublished his/her message void MessageLost(Message message) { var emotionMessage = EmotionMessage.Deserialize(message.Content.ToArray()); RemoveMonkeyMessage(emotionMessage); }
// Method to be called when a monkey published his/her message void MessageFound(Message message) { var emotionMessage = EmotionMessage.Deserialize(message.Content.ToArray()); AddMonkeyMessage(emotionMessage); }
public override void OnFound(NearbyMessage message) { var emotionMsg = EmotionMessage.Deserialize(message.GetContent()); OnFoundHandler?.Invoke(emotionMsg); }