Skip to content

Instantly share code, notes, and snippets.

View okwasniewski's full-sized avatar
💭
💻

Oskar Kwaśniewski okwasniewski

💭
💻
View GitHub Profile
npx create-react-native-library@latest SwiftUIStoreView
s.source_files = "ios/**/*.{h,m,mm,cpp,swift}"
s.source_files = "ios/**/*.{h,m,mm,cpp,swift}"
#ifdef __cplusplus
#import <React/RCTViewComponentView.h>
#import <UIKit/UIKit.h>
#ifndef SwiftUIStoreViewViewNativeComponent_h
#define SwiftUIStoreViewViewNativeComponent_h
NS_ASSUME_NONNULL_BEGIN
import SwiftUI
import StoreKit
class Props: ObservableObject {
@Published var productIDs: [String] = []
}
struct SwiftUIStoreView: View {
@ObservedObject var props: Props
import UIKit
import React
import SwiftUI
@objc public class StoreViewProvider: UIView {
private var props = Props()
private var hostingController: UIHostingController<SwiftUIStoreView>?
public override func layoutSubviews() {
super.layoutSubviews()
@okwasniewski
okwasniewski / SwiftUIStoreView.h
Last active February 26, 2025 12:03
SwiftUIStoreView.h
#if __has_include("SwiftUIStoreView/SwiftUIStoreView-Swift.h")
#import "SwiftUIStoreView/SwiftUIStoreView-Swift.h"
#else
#import "SwiftUIStoreView-Swift.h"
#endif
@okwasniewski
okwasniewski / SwiftUIStoreViewView.mm
Last active February 26, 2025 12:02
SwiftUIStoreViewView.mm
@implementation SwiftUIStoreViewView {
StoreViewProvider* _view;
}
@okwasniewski
okwasniewski / SwiftUIStoreViewView.mm
Last active February 26, 2025 12:02
SwiftUIStoreViewView.mm
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
static const auto defaultProps = std::make_shared<const SwiftUIStoreViewViewProps>();
_props = defaultProps;
_view = [[StoreViewProvider alloc] init];
self.contentView = _view;
}
@interface SwiftUIStoreViewViewManager : RCTViewManager
@end
@implementation SwiftUIStoreViewViewManager
RCT_EXPORT_MODULE(SwiftUIStoreViewView)
- (UIView *)view
{
return [[StoreViewProvider alloc] init];