wxr
2021-11-18 dd3f6db0cb3c242758ab0000a0513e093f02531c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
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();
                }
            }); 
        }
 
    }
}