From 91ca6ab3c08823e8f4b6be9d64c8735c1e8de29d Mon Sep 17 00:00:00 2001 From: Jake Jarvis Date: Sun, 22 Mar 2026 18:40:36 -0400 Subject: [PATCH] fix(native): add podspec to `sofa-widgets-support` module to resolve CocoaPods module map build failure --- .../expo-module.config.json | 6 +++++ .../index.ts | 2 +- .../ios/SofaWidgetsSupport.podspec | 23 +++++++++++++++++++ .../ios/SofaWidgetsSupportModule.swift} | 4 ++-- .../src/SofaWidgetsSupportModule.ts | 3 +++ .../widget-images/expo-module.config.json | 6 ----- .../widget-images/src/WidgetImagesModule.ts | 3 --- apps/native/src/lib/widgets.ts | 2 +- 8 files changed, 36 insertions(+), 13 deletions(-) create mode 100644 apps/native/modules/sofa-widgets-support/expo-module.config.json rename apps/native/modules/{widget-images => sofa-widgets-support}/index.ts (90%) create mode 100644 apps/native/modules/sofa-widgets-support/ios/SofaWidgetsSupport.podspec rename apps/native/modules/{widget-images/ios/WidgetImagesModule.swift => sofa-widgets-support/ios/SofaWidgetsSupportModule.swift} (97%) create mode 100644 apps/native/modules/sofa-widgets-support/src/SofaWidgetsSupportModule.ts delete mode 100644 apps/native/modules/widget-images/expo-module.config.json delete mode 100644 apps/native/modules/widget-images/src/WidgetImagesModule.ts diff --git a/apps/native/modules/sofa-widgets-support/expo-module.config.json b/apps/native/modules/sofa-widgets-support/expo-module.config.json new file mode 100644 index 0000000..53a854b --- /dev/null +++ b/apps/native/modules/sofa-widgets-support/expo-module.config.json @@ -0,0 +1,6 @@ +{ + "platforms": ["ios"], + "ios": { + "modules": ["SofaWidgetsSupportModule"] + } +} diff --git a/apps/native/modules/widget-images/index.ts b/apps/native/modules/sofa-widgets-support/index.ts similarity index 90% rename from apps/native/modules/widget-images/index.ts rename to apps/native/modules/sofa-widgets-support/index.ts index efb9c80..e6dfbc5 100644 --- a/apps/native/modules/widget-images/index.ts +++ b/apps/native/modules/sofa-widgets-support/index.ts @@ -1,7 +1,7 @@ import { Platform } from "react-native"; function getModule() { - return require("./src/WidgetImagesModule").default; + return require("./src/SofaWidgetsSupportModule").default; } export async function downloadWidgetImage(url: string, key: string): Promise { diff --git a/apps/native/modules/sofa-widgets-support/ios/SofaWidgetsSupport.podspec b/apps/native/modules/sofa-widgets-support/ios/SofaWidgetsSupport.podspec new file mode 100644 index 0000000..eb6834d --- /dev/null +++ b/apps/native/modules/sofa-widgets-support/ios/SofaWidgetsSupport.podspec @@ -0,0 +1,23 @@ +Pod::Spec.new do |s| + s.name = 'SofaWidgetsSupport' + s.version = '1.0.0' + s.summary = 'Native helpers for Sofa iOS widgets' + s.description = 'Image downloading and caching for Sofa widget extensions' + s.author = '' + s.homepage = 'https://docs.expo.dev/modules/' + s.platforms = { + :ios => '15.1', + :tvos => '15.1' + } + s.source = { git: '' } + s.static_framework = true + + s.dependency 'ExpoModulesCore' + + # Swift/Objective-C compatibility + s.pod_target_xcconfig = { + 'DEFINES_MODULE' => 'YES', + } + + s.source_files = "**/*.{h,m,mm,swift,hpp,cpp}" +end diff --git a/apps/native/modules/widget-images/ios/WidgetImagesModule.swift b/apps/native/modules/sofa-widgets-support/ios/SofaWidgetsSupportModule.swift similarity index 97% rename from apps/native/modules/widget-images/ios/WidgetImagesModule.swift rename to apps/native/modules/sofa-widgets-support/ios/SofaWidgetsSupportModule.swift index 6c2c572..57fe8fb 100644 --- a/apps/native/modules/widget-images/ios/WidgetImagesModule.swift +++ b/apps/native/modules/sofa-widgets-support/ios/SofaWidgetsSupportModule.swift @@ -4,9 +4,9 @@ import UIKit private let groupIdentifier = "group.com.jakejarvis.sofa" private let imageDirectory = "widget_images" -public class WidgetImagesModule: Module { +public class SofaWidgetsSupportModule: Module { public func definition() -> ModuleDefinition { - Name("WidgetImages") + Name("SofaWidgetsSupport") AsyncFunction("downloadWidgetImage") { (url: String, key: String) -> String? in guard let imageUrl = URL(string: url) else { diff --git a/apps/native/modules/sofa-widgets-support/src/SofaWidgetsSupportModule.ts b/apps/native/modules/sofa-widgets-support/src/SofaWidgetsSupportModule.ts new file mode 100644 index 0000000..d2d6c66 --- /dev/null +++ b/apps/native/modules/sofa-widgets-support/src/SofaWidgetsSupportModule.ts @@ -0,0 +1,3 @@ +import { requireNativeModule } from "expo"; + +export default requireNativeModule("SofaWidgetsSupport"); diff --git a/apps/native/modules/widget-images/expo-module.config.json b/apps/native/modules/widget-images/expo-module.config.json deleted file mode 100644 index 0fe657e..0000000 --- a/apps/native/modules/widget-images/expo-module.config.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "platforms": ["ios"], - "ios": { - "modules": ["WidgetImagesModule"] - } -} diff --git a/apps/native/modules/widget-images/src/WidgetImagesModule.ts b/apps/native/modules/widget-images/src/WidgetImagesModule.ts deleted file mode 100644 index 1c0287d..0000000 --- a/apps/native/modules/widget-images/src/WidgetImagesModule.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { requireNativeModule } from "expo"; - -export default requireNativeModule("WidgetImages"); diff --git a/apps/native/src/lib/widgets.ts b/apps/native/src/lib/widgets.ts index 92fd777..288e75c 100644 --- a/apps/native/src/lib/widgets.ts +++ b/apps/native/src/lib/widgets.ts @@ -5,7 +5,7 @@ import { resolveUrl } from "@/lib/server"; import type { ContinueWatchingProps } from "@/widgets/continue-watching"; import type { UpcomingProps } from "@/widgets/upcoming"; -import { copyBundledAsset, downloadWidgetImage } from "../../modules/widget-images"; +import { copyBundledAsset, downloadWidgetImage } from "../../modules/sofa-widgets-support"; /** Resolve a potentially-relative image path to an absolute URL and download it. */ async function downloadImage(path: string | null, key: string): Promise {