/*
|
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;
|
|
namespace Other.Siri
|
{
|
public class VoiceShortcutDataManager
|
{
|
INVoiceShortcut[] VoiceShortcuts;
|
|
public VoiceShortcutDataManager()
|
{
|
UpdateVoiceShortcuts(null);
|
}
|
|
public INVoiceShortcut VoiceShortcutForOrder(SiriScene ss)
|
{
|
var voiceShortcut = VoiceShortcuts.FirstOrDefault((shortcut) =>
|
{
|
var intent = shortcut.Shortcut.Intent as HdlSiri.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 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();
|
}
|
});
|
}
|
|
}
|
}
|