/* See LICENSE folder for this sample’s licensing information. Abstract: A data manager that surfaces INVoiceShortcuts managed by INVoiceShortcutCenter. */ using System; using Intents; using System.Linq; using HDLSceneSiri; namespace Other.Siri { public class VoiceShortcutDataManager { INVoiceShortcut[] VoiceShortcuts; public VoiceShortcutDataManager() { UpdateVoiceShortcuts(null); } public VoiceShortcutDataManager(Action action) { UpdateVoiceShortcuts(action); } public INVoiceShortcut VoiceShortcutForOrder(SiriScene ss) { var voiceShortcut = VoiceShortcuts.FirstOrDefault((shortcut) => { var intent = shortcut.Shortcut.Intent as HDLRunSceneIntent; if (intent is null) { return false; } var orderFromIntent = SiriScene.FromOrderSoupIntent(intent); if (orderFromIntent is null) { return false; } return ss.IsEqual(orderFromIntent); }); return voiceShortcut; } public INVoiceShortcut VoiceShortcutForOrder2(SiriScene ss) { var voiceShortcut = VoiceShortcuts.FirstOrDefault((shortcut) => { var intent = shortcut.Shortcut.Intent as HDLRunSceneIntent; if (intent is null) { return false; } var orderFromIntent = SiriScene.FromOrderSoupIntent(intent); if (orderFromIntent is null) { return false; } return ss.IsEqual(orderFromIntent); }); return voiceShortcut; } public INVoiceShortcut FirstTemp () { try { if(VoiceShortcuts == null) { UpdateVoiceShortcuts(null); } return VoiceShortcuts[0]; } catch { return null; } } public void UpdateVoiceShortcuts(Action completion) { INVoiceShortcutCenter.SharedCenter.GetAllVoiceShortcuts((voiceShortcutsFromCenter, error) => { if (voiceShortcutsFromCenter is null) { if (!(error is null)) { Console.WriteLine($"Failed to fetch voice shortcuts with error {error}"); } return; } VoiceShortcuts = voiceShortcutsFromCenter; if (!(completion is null)) { completion(); } }); } } }