expo-invoke 3.1.2 → 3.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33,6 +33,12 @@ dependencies {
33
33
  implementation project(':expo-modules-core')
34
34
  implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}"
35
35
  implementation "androidx.core:core-ktx:1.12.0"
36
+ // InvokeSliceProvider.kt uses androidx.slice.* (Slice, SliceProvider, ListBuilder,
37
+ // SliceAction) but nothing declared the artifact that ships those classes —
38
+ // every consumer with slices configured (or even just autolinked, since Gradle
39
+ // compiles this whole module regardless of feature usage) failed to compile.
40
+ implementation "androidx.slice:slice-core:1.0.0"
41
+ implementation "androidx.slice:slice-builders:1.0.0"
36
42
  }
37
43
 
38
44
  def safeExtGet(prop, fallback) {
@@ -5,6 +5,7 @@ import android.content.ContentResolver
5
5
  import android.content.Context
6
6
  import android.content.Intent
7
7
  import android.net.Uri
8
+ import androidx.core.graphics.drawable.IconCompat
8
9
  import androidx.slice.Slice
9
10
  import androidx.slice.SliceProvider
10
11
  import androidx.slice.builders.ListBuilder
@@ -38,7 +39,11 @@ class InvokeSliceProvider : SliceProvider() {
38
39
  val subtitle = subtitleKey?.let { prefs.getString("widget.$it", null) }
39
40
 
40
41
  val tapIntent = buildTapIntent(context, intentId)
41
- val action = SliceAction.create(tapIntent, null, ListBuilder.ICON_IMAGE, title)
42
+ // SliceAction.create requires a non-null icon — build it from the consuming
43
+ // app's own launcher icon rather than hardcoding a resource name that would
44
+ // only exist in this SDK's own (nonexistent) resources.
45
+ val icon = IconCompat.createWithResource(context, context.applicationInfo.icon)
46
+ val action = SliceAction.create(tapIntent, icon, ListBuilder.ICON_IMAGE, title)
42
47
 
43
48
  return ListBuilder(context, sliceUri, ListBuilder.INFINITY)
44
49
  .addRow { row ->
@@ -27,15 +27,17 @@ function generateShortcutsXml(intents, packageName) {
27
27
  `You have ${shortcutIntents.length} intents with shortTitle — ` +
28
28
  `only the first 5 will be included. Remove shortTitle from lower-priority intents.`);
29
29
  }
30
- const items = shortcutIntents.slice(0, 5).map((intent, idx) => {
31
- const rank = idx + 1;
30
+ // Static shortcuts have no `android:rank` XML attribute — AAPT rejects it
31
+ // outright ("attribute android:rank not found"). Rank only exists on the
32
+ // runtime ShortcutInfo.Builder API for dynamic shortcuts; for static ones,
33
+ // priority is implied purely by declaration order in this file.
34
+ const items = shortcutIntents.slice(0, 5).map((intent) => {
32
35
  const resourceName = toResourceName(intent.id);
33
36
  return ` <shortcut
34
37
  android:shortcutId="${escapeXml(intent.id)}"
35
38
  android:enabled="true"
36
39
  android:shortcutShortLabel="@string/shortcut_short_label_${resourceName}"
37
- android:shortcutLongLabel="@string/shortcut_long_label_${resourceName}"
38
- android:rank="${rank}">
40
+ android:shortcutLongLabel="@string/shortcut_long_label_${resourceName}">
39
41
  <intent
40
42
  android:action="${escapeXml(packageName)}.SHORTCUT"
41
43
  android:targetPackage="${escapeXml(packageName)}"
@@ -1 +1 @@
1
- {"version":3,"file":"generateShortcutsXml.js","sourceRoot":"","sources":["../../../plugin/codegen/generateShortcutsXml.ts"],"names":[],"mappings":";;AAgBA,oDA+CC;AAOD,gEAgBC;AApFD,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAO,CAAC;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,4EAA4E;AAC5E,yEAAyE;AACzE,SAAS,cAAc,CAAC,EAAU;IAChC,OAAO,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,SAAgB,oBAAoB,CAClC,OAA2B,EAC3B,WAAmB;IAEnB,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAE5D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;;;CAGV,CAAC;IACA,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CACV,0DAA0D;YAC1D,YAAY,eAAe,CAAC,MAAM,6BAA6B;YAC/D,mFAAmF,CACpF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QAC5D,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;QACrB,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO;0BACe,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;;+DAEiB,YAAY;6DACd,YAAY;oBACrD,IAAI;;wBAEA,SAAS,CAAC,WAAW,CAAC;+BACf,SAAS,CAAC,WAAW,CAAC;6BACxB,SAAS,CAAC,WAAW,CAAC;sBAC7B,SAAS,CAAC,WAAW,CAAC,aAAa,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;;cAE/D,CAAC;IACb,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO;;;;EAIP,KAAK;;;CAGN,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,SAAgB,0BAA0B,CAAC,OAA2B;IACpE,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAExE,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,yDAAyD,CAAC;IACnE,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;;QACjD,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO;YACL,wCAAwC,YAAY,KAAK,SAAS,CAAC,CAAC,MAAA,MAAM,CAAC,UAAU,mCAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW;YAC/H,uCAAuC,YAAY,KAAK,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW;SACxG,CAAC;IACJ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,wDAAwD,OAAO,kBAAkB,CAAC;AAC3F,CAAC"}
1
+ {"version":3,"file":"generateShortcutsXml.js","sourceRoot":"","sources":["../../../plugin/codegen/generateShortcutsXml.ts"],"names":[],"mappings":";;AAgBA,oDAiDC;AAOD,gEAgBC;AAtFD,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAO,CAAC;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,4EAA4E;AAC5E,yEAAyE;AACzE,SAAS,cAAc,CAAC,EAAU;IAChC,OAAO,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,SAAgB,oBAAoB,CAClC,OAA2B,EAC3B,WAAmB;IAEnB,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAE5D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;;;CAGV,CAAC;IACA,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CACV,0DAA0D;YAC1D,YAAY,eAAe,CAAC,MAAM,6BAA6B;YAC/D,mFAAmF,CACpF,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,yEAAyE;IACzE,2EAA2E;IAC3E,gEAAgE;IAChE,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACvD,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO;0BACe,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;;+DAEiB,YAAY;6DACd,YAAY;;wBAEjD,SAAS,CAAC,WAAW,CAAC;+BACf,SAAS,CAAC,WAAW,CAAC;6BACxB,SAAS,CAAC,WAAW,CAAC;sBAC7B,SAAS,CAAC,WAAW,CAAC,aAAa,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;;cAE/D,CAAC;IACb,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO;;;;EAIP,KAAK;;;CAGN,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,SAAgB,0BAA0B,CAAC,OAA2B;IACpE,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAExE,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,yDAAyD,CAAC;IACnE,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;;QACjD,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO;YACL,wCAAwC,YAAY,KAAK,SAAS,CAAC,CAAC,MAAA,MAAM,CAAC,UAAU,mCAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW;YAC/H,uCAAuC,YAAY,KAAK,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW;SACxG,CAAC;IACJ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,wDAAwD,OAAO,kBAAkB,CAAC;AAC3F,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-invoke",
3
- "version": "3.1.2",
3
+ "version": "3.1.4",
4
4
  "description": "The complete native-surface-to-JS bridge for Expo. One intent config → Siri, Google Assistant, home screen widgets, Dynamic Island, app icon menus, notification actions, NFC, QR, deep links and more — all through a single useInvoke() hook.",
5
5
  "main": "build/src/index.js",
6
6
  "module": "build/src/index.js",