windows init

This commit is contained in:
tapframe 2025-12-28 18:07:32 +05:30
parent 4c50fd8d8d
commit c33ad6676a
39 changed files with 4249 additions and 45 deletions

10
App.tsx
View file

@ -44,8 +44,9 @@ import { mmkvStorage } from './src/services/mmkvStorage';
import AnnouncementOverlay from './src/components/AnnouncementOverlay';
import { CampaignManager } from './src/components/promotions/CampaignManager';
// Only initialize Sentry on native platforms
if (Platform.OS !== 'web') {
// Only initialize Sentry on mobile native platforms (not web or Windows)
const isMobileNative = Platform.OS === 'ios' || Platform.OS === 'android';
if (isMobileNative) {
Sentry.init({
dsn: 'https://1a58bf436454d346e5852b7bfd3c95e8@o4509536317276160.ingest.de.sentry.io/4509536317734992',
@ -66,6 +67,7 @@ if (Platform.OS !== 'web') {
});
}
// Force LTR layout to prevent RTL issues when Arabic is set as system language
// This ensures posters and UI elements remain visible and properly positioned
I18nManager.allowRTL(false);
@ -274,5 +276,5 @@ const styles = StyleSheet.create({
},
});
// Only wrap with Sentry on native platforms
export default Platform.OS !== 'web' ? Sentry.wrap(App) : App;
// Only wrap with Sentry on mobile native platforms (iOS/Android)
export default isMobileNative ? Sentry.wrap(App) : App;

11
NuGet.config Normal file
View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="react-native" value="https://pkgs.dev.azure.com/ms/react-native/_packaging/react-native-public/nuget/v3/index.json" />
<add key="Nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
<disabledPackageSources>
<clear />
</disabledPackageSources>
</configuration>

3
jest.config.windows.js Normal file
View file

@ -0,0 +1,3 @@
const config = {};
module.exports = require('@rnx-kit/jest-preset')('windows', config);

71
metro.config.backup.js Normal file
View file

@ -0,0 +1,71 @@
// Conditionally use Sentry config for native platforms only
let config;
try {
const { getSentryExpoConfig } = require("@sentry/react-native/metro");
config = getSentryExpoConfig(__dirname);
} catch (e) {
// Fallback to default expo config for web
const { getDefaultConfig } = require('expo/metro-config');
config = getDefaultConfig(__dirname);
}
// Enable tree shaking and better minification
config.transformer = {
...config.transformer,
babelTransformerPath: require.resolve('react-native-svg-transformer'),
minifierConfig: {
ecma: 8,
keep_fnames: true,
mangle: {
keep_fnames: true,
},
compress: {
drop_console: true,
drop_debugger: true,
pure_funcs: ['console.log', 'console.info', 'console.debug'],
},
},
};
// Optimize resolver for better tree shaking and SVG support
config.resolver = {
...config.resolver,
assetExts: [...config.resolver.assetExts.filter((ext) => ext !== 'svg'), 'zip'],
sourceExts: [...config.resolver.sourceExts, 'svg'],
resolverMainFields: ['react-native', 'browser', 'main'],
platforms: ['ios', 'android', 'web'],
resolveRequest: (context, moduleName, platform) => {
// Prevent bundling native-only modules for web
const nativeOnlyModules = [
'@react-native-community/blur',
'@d11/react-native-fast-image',
'react-native-fast-image',
'react-native-video',
'react-native-immersive-mode',
'react-native-google-cast',
'@adrianso/react-native-device-brightness',
'react-native-image-colors',
'react-native-boost',
'react-native-nitro-modules',
'@sentry/react-native',
'expo-glass-effect',
'react-native-mmkv',
'@react-native-community/slider',
'@react-native-picker/picker',
'react-native-bottom-tabs',
'@bottom-tabs/react-navigation',
'posthog-react-native',
'@backpackapp-io/react-native-toast',
];
if (platform === 'web' && nativeOnlyModules.includes(moduleName)) {
return {
type: 'empty',
};
}
// Default resolution
return context.resolveRequest(context, moduleName, platform);
},
};
module.exports = config;

View file

@ -1,3 +1,17 @@
// Metro configuration for Nuvio - supports iOS, Android, Web, and Windows
const fs = require('fs');
const path = require('path');
// Windows-specific paths
let rnwPath = null;
try {
rnwPath = fs.realpathSync(
path.resolve(require.resolve('react-native-windows/package.json'), '..'),
);
} catch (e) {
// react-native-windows not available on this machine
}
// Conditionally use Sentry config for native platforms only
let config;
try {
@ -25,40 +39,61 @@ config.transformer = {
pure_funcs: ['console.log', 'console.info', 'console.debug'],
},
},
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: true,
},
}),
};
// Build blockList for Windows
const blockList = [];
if (rnwPath) {
// This stops "npx @react-native-community/cli run-windows" from causing the metro server to crash if its already running
blockList.push(
new RegExp(`${path.resolve(__dirname, 'windows').replace(/[/\\]/g, '/')}.*`)
);
// This prevents "npx @react-native-community/cli run-windows" from hitting: EBUSY: resource busy or locked
blockList.push(new RegExp(`${rnwPath}/build/.*`));
blockList.push(new RegExp(`${rnwPath}/target/.*`));
blockList.push(/.*\.ProjectImports\.zip/);
}
// Native-only modules that should be excluded on web/windows
const nativeOnlyModules = [
'@react-native-community/blur',
'@d11/react-native-fast-image',
'react-native-fast-image',
'react-native-video',
'react-native-immersive-mode',
'react-native-google-cast',
'@adrianso/react-native-device-brightness',
'react-native-image-colors',
'react-native-boost',
'react-native-nitro-modules',
'@sentry/react-native',
'expo-glass-effect',
'react-native-mmkv',
'@react-native-community/slider',
'@react-native-picker/picker',
'react-native-bottom-tabs',
'@bottom-tabs/react-navigation',
'posthog-react-native',
'@backpackapp-io/react-native-toast',
];
// Optimize resolver for better tree shaking and SVG support
config.resolver = {
...config.resolver,
assetExts: [...config.resolver.assetExts.filter((ext) => ext !== 'svg'), 'zip'],
sourceExts: [...config.resolver.sourceExts, 'svg'],
resolverMainFields: ['react-native', 'browser', 'main'],
platforms: ['ios', 'android', 'web'],
platforms: ['ios', 'android', 'web', 'windows'],
blockList: blockList.length > 0 ? blockList : undefined,
resolveRequest: (context, moduleName, platform) => {
// Prevent bundling native-only modules for web
const nativeOnlyModules = [
'@react-native-community/blur',
'@d11/react-native-fast-image',
'react-native-fast-image',
'react-native-video',
'react-native-immersive-mode',
'react-native-google-cast',
'@adrianso/react-native-device-brightness',
'react-native-image-colors',
'react-native-boost',
'react-native-nitro-modules',
'@sentry/react-native',
'expo-glass-effect',
'react-native-mmkv',
'@react-native-community/slider',
'@react-native-picker/picker',
'react-native-bottom-tabs',
'@bottom-tabs/react-navigation',
'posthog-react-native',
'@backpackapp-io/react-native-toast',
];
if (platform === 'web' && nativeOnlyModules.includes(moduleName)) {
// Prevent bundling native-only modules for web and windows
if ((platform === 'web' || platform === 'windows') && nativeOnlyModules.includes(moduleName)) {
return {
type: 'empty',
};
@ -68,4 +103,4 @@ config.resolver = {
},
};
module.exports = config;
module.exports = config;

3076
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -6,7 +6,9 @@
"start": "expo start",
"android": "expo run:android",
"ios": "expo run:ios",
"postinstall": "patch-package"
"postinstall": "patch-package",
"windows": "npx @react-native-community/cli run-windows",
"test:windows": "jest --config jest.config.windows.js"
},
"dependencies": {
"@adrianso/react-native-device-brightness": "^1.2.7",
@ -90,6 +92,7 @@
"react-native-video": "^6.17.0",
"react-native-web": "^0.21.0",
"react-native-wheel-color-picker": "^1.3.1",
"react-native-windows": "^0.81.0",
"react-native-worklets": "^0.7.1"
},
"devDependencies": {
@ -102,7 +105,15 @@
"patch-package": "^8.0.1",
"react-native-svg-transformer": "^1.5.0",
"typescript": "^5.3.3",
"xcode": "^3.0.1"
"xcode": "^3.0.1",
"@rnx-kit/jest-preset": "^0.1.17"
},
"private": true
"private": true,
"react-native-windows": {
"init-windows": {
"name": "Nuvio",
"namespace": "Nuvio",
"template": "cpp-app"
}
}
}

View file

@ -0,0 +1,193 @@
/**
* Windows Video Player - Placeholder Component
*
* This is a placeholder component for the Windows platform.
* Video player functionality will be implemented in a future update.
*
* Options for future implementation:
* 1. Windows MediaFoundation integration
* 2. WebView2 with HTML5 video
* 3. VLC/MPV native integration
*/
import React from 'react';
import { View, Text, StyleSheet, TouchableOpacity } from 'react-native';
import { useNavigation } from '@react-navigation/native';
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
interface WindowsVideoPlayerProps {
route: {
params: {
uri: string;
title?: string;
episodeTitle?: string;
season?: number;
episode?: number;
quality?: string;
year?: number;
streamProvider?: string;
streamName?: string;
type?: 'movie' | 'tv';
tmdbId?: number;
headers?: Record<string, string>;
};
};
}
const WindowsVideoPlayer: React.FC<WindowsVideoPlayerProps> = ({ route }) => {
const navigation = useNavigation();
const { uri, title, episodeTitle, season, episode, quality, streamProvider } = route.params;
const handleGoBack = () => {
navigation.goBack();
};
const handleOpenExternal = () => {
// Future: Open in system default player or browser
console.log('Opening in external player:', uri);
};
const displayTitle = episodeTitle
? `${title} - S${season}E${episode}: ${episodeTitle}`
: title || 'Video';
return (
<View style={styles.container}>
<View style={styles.content}>
<MaterialCommunityIcons
name="video-off-outline"
size={80}
color="#666"
/>
<Text style={styles.title}>Windows Video Player</Text>
<Text style={styles.subtitle}>Coming Soon</Text>
<View style={styles.infoBox}>
<Text style={styles.infoTitle}>{displayTitle}</Text>
{quality && <Text style={styles.infoText}>Quality: {quality}</Text>}
{streamProvider && <Text style={styles.infoText}>Provider: {streamProvider}</Text>}
</View>
<Text style={styles.description}>
Video playback on Windows is not yet supported.{'\n'}
This feature will be available in a future update.
</Text>
<View style={styles.buttonContainer}>
<TouchableOpacity style={styles.button} onPress={handleGoBack}>
<MaterialCommunityIcons name="arrow-left" size={20} color="#fff" />
<Text style={styles.buttonText}>Go Back</Text>
</TouchableOpacity>
<TouchableOpacity
style={[styles.button, styles.secondaryButton]}
onPress={handleOpenExternal}
>
<MaterialCommunityIcons name="open-in-new" size={20} color="#fff" />
<Text style={styles.buttonText}>Open External</Text>
</TouchableOpacity>
</View>
<View style={styles.streamInfo}>
<Text style={styles.streamLabel}>Stream URL:</Text>
<Text style={styles.streamUrl} numberOfLines={2}>
{uri}
</Text>
</View>
</View>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#0a0a0a',
justifyContent: 'center',
alignItems: 'center',
},
content: {
alignItems: 'center',
padding: 40,
maxWidth: 600,
},
title: {
fontSize: 28,
fontWeight: 'bold',
color: '#fff',
marginTop: 20,
},
subtitle: {
fontSize: 18,
color: '#888',
marginTop: 8,
},
infoBox: {
backgroundColor: '#1a1a1a',
borderRadius: 12,
padding: 20,
marginTop: 30,
width: '100%',
alignItems: 'center',
},
infoTitle: {
fontSize: 18,
fontWeight: '600',
color: '#fff',
textAlign: 'center',
},
infoText: {
fontSize: 14,
color: '#888',
marginTop: 4,
},
description: {
fontSize: 14,
color: '#666',
textAlign: 'center',
marginTop: 24,
lineHeight: 22,
},
buttonContainer: {
flexDirection: 'row',
marginTop: 30,
gap: 16,
},
button: {
flexDirection: 'row',
alignItems: 'center',
backgroundColor: '#6366f1',
paddingHorizontal: 24,
paddingVertical: 12,
borderRadius: 8,
gap: 8,
},
secondaryButton: {
backgroundColor: '#333',
},
buttonText: {
color: '#fff',
fontSize: 16,
fontWeight: '500',
},
streamInfo: {
marginTop: 40,
padding: 16,
backgroundColor: '#111',
borderRadius: 8,
width: '100%',
},
streamLabel: {
fontSize: 12,
color: '#666',
marginBottom: 4,
},
streamUrl: {
fontSize: 12,
color: '#444',
fontFamily: 'monospace',
},
});
export default WindowsVideoPlayer;

View file

@ -49,6 +49,15 @@ import DownloadsScreen from '../screens/DownloadsScreen';
import MetadataScreen from '../screens/MetadataScreen';
import KSPlayerCore from '../components/player/KSPlayerCore';
import AndroidVideoPlayer from '../components/player/AndroidVideoPlayer';
// Windows video player - conditionally imported
let WindowsVideoPlayer: any = null;
if (Platform.OS === 'windows') {
try {
WindowsVideoPlayer = require('../components/player/windows/WindowsVideoPlayer').default;
} catch {
WindowsVideoPlayer = null;
}
}
import CatalogScreen from '../screens/CatalogScreen';
import AddonsScreen from '../screens/AddonsScreen';
import SearchScreen from '../screens/SearchScreen';
@ -163,6 +172,26 @@ export type RootStackParamList = {
videoType?: string;
groupedEpisodes?: { [seasonNumber: number]: any[] };
};
PlayerWindows: {
uri: string;
title?: string;
season?: number;
episode?: number;
episodeTitle?: string;
quality?: string;
year?: number;
streamProvider?: string;
streamName?: string;
headers?: { [key: string]: string };
id?: string;
type?: string;
episodeId?: string;
imdbId?: string;
availableStreams?: { [providerId: string]: { streams: any[]; addonName: string } };
backdrop?: string;
videoType?: string;
groupedEpisodes?: { [seasonNumber: number]: any[] };
};
Catalog: { id: string; type: string; addonId?: string; name?: string; genreFilter?: string };
Credits: { mediaId: string; mediaType: string };
ShowRatings: { showId: number };
@ -1315,6 +1344,23 @@ const InnerNavigator = ({ initialRouteName }: { initialRouteName?: keyof RootSta
freezeOnBlur: true,
}}
/>
{/* Windows Video Player */}
{Platform.OS === 'windows' && WindowsVideoPlayer && (
<Stack.Screen
name="PlayerWindows"
component={WindowsVideoPlayer as any}
options={{
animation: 'none',
animationDuration: 0,
presentation: 'card',
gestureEnabled: false,
contentStyle: {
backgroundColor: '#000000',
},
freezeOnBlur: true,
}}
/>
)}
<Stack.Screen
name="Catalog"
component={CatalogScreen as any}

103
src/utils/platformUtils.ts Normal file
View file

@ -0,0 +1,103 @@
/**
* Platform detection utilities for desktop platforms
* Supports iOS, Android, Web, Windows, and macOS
*/
import { Platform } from 'react-native';
// Platform identifiers
export const isIOS = Platform.OS === 'ios';
export const isAndroid = Platform.OS === 'android';
export const isWeb = Platform.OS === 'web';
export const isWindows = Platform.OS === 'windows';
export const isMacOS = Platform.OS === 'macos';
// Platform groups
export const isMobile = isIOS || isAndroid;
export const isDesktop = isWindows || isMacOS;
export const isNative = !isWeb;
// TV detection (already exists in Platform but wrapped for consistency)
export const isTV = Platform.isTV ?? false;
// Desktop-specific features
export const supportsKeyboardShortcuts = isDesktop || isWeb;
export const supportsWindowManagement = isDesktop;
export const supportsTouchGestures = isMobile || isTV;
/**
* Get platform-specific value
* @example
* const padding = selectPlatform({ ios: 16, android: 12, windows: 20, default: 16 });
*/
export function selectPlatform<T>(options: {
ios?: T;
android?: T;
web?: T;
windows?: T;
macos?: T;
mobile?: T;
desktop?: T;
default: T;
}): T {
if (isIOS && options.ios !== undefined) return options.ios;
if (isAndroid && options.android !== undefined) return options.android;
if (isWeb && options.web !== undefined) return options.web;
if (isWindows && options.windows !== undefined) return options.windows;
if (isMacOS && options.macos !== undefined) return options.macos;
if (isMobile && options.mobile !== undefined) return options.mobile;
if (isDesktop && options.desktop !== undefined) return options.desktop;
return options.default;
}
/**
* Check if a native module is supported on the current platform
*/
export function isModuleSupported(moduleName: string): boolean {
// Modules that are NOT supported on Windows
const windowsUnsupported = [
'react-native-video',
'react-native-google-cast',
'react-native-immersive-mode',
'@adrianso/react-native-device-brightness',
'react-native-boost',
'expo-glass-effect',
];
// Modules that are NOT supported on Web
const webUnsupported = [
...windowsUnsupported,
'@react-native-community/blur',
'@d11/react-native-fast-image',
'react-native-mmkv',
'@react-native-community/slider',
'@react-native-picker/picker',
'react-native-bottom-tabs',
];
if (isWindows && windowsUnsupported.includes(moduleName)) {
return false;
}
if (isWeb && webUnsupported.includes(moduleName)) {
return false;
}
return true;
}
export default {
isIOS,
isAndroid,
isWeb,
isWindows,
isMacOS,
isMobile,
isDesktop,
isNative,
isTV,
supportsKeyboardShortcuts,
supportsWindowManagement,
supportsTouchGestures,
selectPlatform,
isModuleSupported,
};

View file

@ -12,6 +12,20 @@ export interface PlayerSelectionOptions {
platform?: typeof Platform.OS;
}
// Player component types based on platform
export type PlayerComponentName =
| 'AndroidVideoPlayer'
| 'KSPlayerCore'
| 'WindowsVideoPlayer'
| 'WebVideoPlayer';
/**
* Check if current platform is a desktop platform
*/
export const isDesktopPlatform = (platform = Platform.OS): boolean => {
return platform === 'windows' || platform === 'macos';
};
/**
* Determines which player should be used for a given stream
*/
@ -31,6 +45,11 @@ export const shouldUseKSPlayer = ({
return true;
}
// Windows uses WindowsVideoPlayer (placeholder for now)
if (platform === 'windows') {
return false;
}
// Default fallback
return false;
};
@ -38,6 +57,16 @@ export const shouldUseKSPlayer = ({
/**
* Get the appropriate player component name
*/
export const getPlayerComponent = (options: PlayerSelectionOptions): 'AndroidVideoPlayer' | 'KSPlayerCore' => {
export const getPlayerComponent = (options: PlayerSelectionOptions): PlayerComponentName => {
const platform = options.platform ?? Platform.OS;
if (platform === 'windows') {
return 'WindowsVideoPlayer';
}
if (platform === 'web') {
return 'WebVideoPlayer';
}
return shouldUseKSPlayer(options) ? 'KSPlayerCore' : 'AndroidVideoPlayer';
};

46
windows/.gitignore vendored Normal file
View file

@ -0,0 +1,46 @@
*AppPackages*
*BundleArtifacts*
#OS junk files
[Tt]humbs.db
*.DS_Store
#Visual Studio files
*.[Oo]bj
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.[Cc]ache
*.ilk
*.log
*.lib
*.sbr
*.sdf
*.opensdf
*.opendb
*.unsuccessfulbuild
ipch/
[Oo]bj/
[Bb]in
[Dd]ebug*/
[Rr]elease*/
Ankh.NoLoad
.vs/
# Visual C++ cache files
#Files generated by the VS build
**/Generated Files/**
#Files generated by MS build
*.binlog
*.err
*.wrn

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Microsoft.ReactNative Experimental Features">
<!--
Required for building a New Architecture project.
App projects should not change this value.
See https://microsoft.github.io/react-native-windows/docs/new-architecture
-->
<RnwNewArch>true</RnwNewArch>
<!--
Changes compilation to assume use of Microsoft.ReactNative NuGet packages
instead of building the framework from source. Defaults to true.
This is set during app project creation and should not be changed.
See https://microsoft.github.io/react-native-windows/docs/nuget
-->
<UseExperimentalNuget>true</UseExperimentalNuget>
<ReactExperimentalFeaturesSet>true</ReactExperimentalFeaturesSet>
</PropertyGroup>
</Project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(SolutionDir)\ExperimentalFeatures.props" Condition="Exists('$(SolutionDir)\ExperimentalFeatures.props')" />
<PropertyGroup>
<ProjectGuid>{393aab9c-06e7-4fbd-8bbd-b3c4099ba200}</ProjectGuid>
<DefaultLanguage>en-US</DefaultLanguage>
<EntryPointProjectUniqueName>..\Nuvio\Nuvio.vcxproj</EntryPointProjectUniqueName>
<DebuggerType>NativeOnly</DebuggerType>
<BackgroundTaskDebugEngines>NativeOnly</BackgroundTaskDebugEngines>
</PropertyGroup>
<PropertyGroup Label="ReactNativeWindowsProps">
<ReactNativeWindowsDir Condition="'$(ReactNativeWindowsDir)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), 'node_modules\react-native-windows\package.json'))\node_modules\react-native-windows\</ReactNativeWindowsDir>
</PropertyGroup>
<Import Project="$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.WindowsSdk.Default.props" />
<PropertyGroup>
<WapProjPath Condition="'$(WapProjPath)'==''">$(MSBuildExtensionsPath)\Microsoft\DesktopBridge\</WapProjPath>
</PropertyGroup>
<Import Project="$(WapProjPath)\Microsoft.DesktopBridge.props" />
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x86">
<Configuration>Debug</Configuration>
<Platform>x86</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x86">
<Configuration>Release</Configuration>
<Platform>x86</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ImportGroup Label="ReactNativeWindowsPropertySheets">
<Import Project="$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.Composition.Package.props" Condition="Exists('$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.Composition.Package.props')" />
</ImportGroup>
<ItemGroup>
<AppxManifest Include="Package.appxmanifest">
<SubType>Designer</SubType>
</AppxManifest>
</ItemGroup>
<ItemGroup>
<Content Include="Images\SplashScreen.scale-200.png" />
<Content Include="Images\LockScreenLogo.scale-200.png" />
<Content Include="Images\Square150x150Logo.scale-200.png" />
<Content Include="Images\Square44x44Logo.scale-200.png" />
<Content Include="Images\Square44x44Logo.targetsize-24_altform-unplated.png" />
<Content Include="Images\StoreLogo.png" />
<Content Include="Images\Wide310x150Logo.scale-200.png" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Nuvio\Nuvio.vcxproj">
<SkipGetTargetFrameworkProperties>True</SkipGetTargetFrameworkProperties>
</ProjectReference>
</ItemGroup>
<Import Project="$(WapProjPath)\Microsoft.DesktopBridge.targets" />
<ImportGroup Label="ReactNativeWindowsTargets">
<Import Project="$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.Composition.Package.targets" Condition="Exists('$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.Composition.Package.targets')" />
</ImportGroup>
<Target Name="EnsureReactNativeWindowsTargets" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references targets in your node_modules\react-native-windows folder that are missing. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.Composition.Package.props')" Text="$([System.String]::Format('$(ErrorText)', '$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.Composition.Package.props'))" />
<Error Condition="!Exists('$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.Composition.Package.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.Composition.Package.targets'))" />
</Target>
</Project>

View file

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap rescap">
<Identity
Name="Nuvio"
Publisher="CN=nayifnoushad"
Version="1.0.0.0" />
<Properties>
<DisplayName>Nuvio</DisplayName>
<PublisherDisplayName>nayifnoushad</PublisherDisplayName>
<Logo>Images\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.17763.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate"/>
</Resources>
<Applications>
<Application Id="App"
Executable="$targetnametoken$.exe"
EntryPoint="$targetentrypoint$">
<uap:VisualElements
DisplayName="Nuvio"
Description="Nuvio"
BackgroundColor="transparent"
Square150x150Logo="Images\Square150x150Logo.png"
Square44x44Logo="Images\Square44x44Logo.png">
<uap:DefaultTile Wide310x150Logo="Images\Wide310x150Logo.png" />
<uap:SplashScreen Image="Images\SplashScreen.png" />
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClient" />
<rescap:Capability Name="runFullTrust" />
</Capabilities>
</Package>

63
windows/Nuvio.sln Normal file
View file

@ -0,0 +1,63 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.3.32929.385
MinimumVisualStudioVersion = 10.0.40219.1
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "Nuvio.Package", "Nuvio.Package\Nuvio.Package.wapproj", "{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Nuvio", "Nuvio\Nuvio.vcxproj", "{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Debug|ARM64 = Debug|ARM64
Release|x64 = Release|x64
Release|x86 = Release|x86
Release|ARM64 = Release|ARM64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Debug|x64.ActiveCfg = Debug|x64
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Debug|x64.Build.0 = Debug|x64
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Debug|x64.Deploy.0 = Debug|x64
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Debug|x86.ActiveCfg = Debug|x86
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Debug|x86.Build.0 = Debug|x86
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Debug|x86.Deploy.0 = Debug|x86
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Debug|ARM64.ActiveCfg = Debug|ARM64
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Debug|ARM64.Build.0 = Debug|ARM64
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Debug|ARM64.Deploy.0 = Debug|ARM64
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Release|x64.ActiveCfg = Release|x64
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Release|x64.Build.0 = Release|x64
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Release|x64.Deploy.0 = Release|x64
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Release|x86.ActiveCfg = Release|x86
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Release|x86.Build.0 = Release|x86
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Release|x86.Deploy.0 = Release|x86
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Release|ARM64.ActiveCfg = Release|ARM64
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Release|ARM64.Build.0 = Release|ARM64
{393AAB9C-06E7-4FBD-8BBD-B3C4099BA200}.Release|ARM64.Deploy.0 = Release|ARM64
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Debug|x64.ActiveCfg = Debug|x64
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Debug|x64.Build.0 = Debug|x64
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Debug|x64.Deploy.0 = Debug|x64
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Debug|x86.ActiveCfg = Debug|Win32
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Debug|x86.Build.0 = Debug|Win32
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Debug|x86.Deploy.0 = Debug|Win32
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Debug|ARM64.ActiveCfg = Debug|ARM64
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Debug|ARM64.Build.0 = Debug|ARM64
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Debug|ARM64.Deploy.0 = Debug|ARM64
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Release|x64.ActiveCfg = Release|x64
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Release|x64.Build.0 = Release|x64
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Release|x64.Deploy.0 = Release|x64
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Release|x86.ActiveCfg = Release|Win32
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Release|x86.Build.0 = Release|Win32
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Release|x86.Deploy.0 = Release|Win32
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Release|ARM64.ActiveCfg = Release|ARM64
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Release|ARM64.Build.0 = Release|ARM64
{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}.Release|ARM64.Deploy.0 = Release|ARM64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D43FAD39-F619-437D-BB40-04A3982ACB6A}
EndGlobalSection
EndGlobal

1
windows/Nuvio/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/Bundle

View file

@ -0,0 +1,14 @@
// AutolinkedNativeModules.g.cpp contents generated by "npx @react-native-community/cli autolink-windows"
// clang-format off
#include "pch.h"
#include "AutolinkedNativeModules.g.h"
namespace winrt::Microsoft::ReactNative
{
void RegisterAutolinkedNativeModulePackages(winrt::Windows::Foundation::Collections::IVector<winrt::Microsoft::ReactNative::IReactPackageProvider> const& packageProviders)
{
UNREFERENCED_PARAMETER(packageProviders);
}
}

View file

@ -0,0 +1,10 @@
// AutolinkedNativeModules.g.h contents generated by "npx @react-native-community/cli autolink-windows"
// clang-format off
#pragma once
namespace winrt::Microsoft::ReactNative
{
void RegisterAutolinkedNativeModulePackages(winrt::Windows::Foundation::Collections::IVector<winrt::Microsoft::ReactNative::IReactPackageProvider> const& packageProviders);
}

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- AutolinkedNativeModules.g.props contents generated by "npx @react-native-community/cli autolink-windows" -->
<PropertyGroup>
</PropertyGroup>
</Project>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- AutolinkedNativeModules.g.targets contents generated by "npx @react-native-community/cli autolink-windows" -->
<ItemGroup>
</ItemGroup>
</Project>

82
windows/Nuvio/Nuvio.cpp Normal file
View file

@ -0,0 +1,82 @@
// Nuvio.cpp : Defines the entry point for the application.
//
#include "pch.h"
#include "Nuvio.h"
#include "AutolinkedNativeModules.g.h"
#include "NativeModules.h"
// A PackageProvider containing any turbo modules you define within this app project
struct CompReactPackageProvider
: winrt::implements<CompReactPackageProvider, winrt::Microsoft::ReactNative::IReactPackageProvider> {
public: // IReactPackageProvider
void CreatePackage(winrt::Microsoft::ReactNative::IReactPackageBuilder const &packageBuilder) noexcept {
AddAttributedModules(packageBuilder, true);
}
};
// The entry point of the Win32 application
_Use_decl_annotations_ int CALLBACK WinMain(HINSTANCE instance, HINSTANCE, PSTR /* commandLine */, int showCmd) {
// Initialize WinRT
winrt::init_apartment(winrt::apartment_type::single_threaded);
// Enable per monitor DPI scaling
SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2);
// Find the path hosting the app exe file
WCHAR appDirectory[MAX_PATH];
GetModuleFileNameW(NULL, appDirectory, MAX_PATH);
PathCchRemoveFileSpec(appDirectory, MAX_PATH);
// Create a ReactNativeWin32App with the ReactNativeAppBuilder
auto reactNativeWin32App{winrt::Microsoft::ReactNative::ReactNativeAppBuilder().Build()};
// Configure the initial InstanceSettings for the app's ReactNativeHost
auto settings{reactNativeWin32App.ReactNativeHost().InstanceSettings()};
// Register any autolinked native modules
RegisterAutolinkedNativeModulePackages(settings.PackageProviders());
// Register any native modules defined within this app project
settings.PackageProviders().Append(winrt::make<CompReactPackageProvider>());
#if BUNDLE
// Load the JS bundle from a file (not Metro):
// Set the path (on disk) where the .bundle file is located
settings.BundleRootPath(std::wstring(L"file://").append(appDirectory).append(L"\\Bundle\\").c_str());
// Set the name of the bundle file (without the .bundle extension)
settings.JavaScriptBundleFile(L"index.windows");
// Disable hot reload
settings.UseFastRefresh(false);
#else
// Load the JS bundle from Metro
settings.JavaScriptBundleFile(L"index");
// Enable hot reload
settings.UseFastRefresh(true);
#endif
#if _DEBUG
// For Debug builds
// Enable Direct Debugging of JS
settings.UseDirectDebugger(true);
// Enable the Developer Menu
settings.UseDeveloperSupport(true);
#else
// For Release builds:
// Disable Direct Debugging of JS
settings.UseDirectDebugger(false);
// Disable the Developer Menu
settings.UseDeveloperSupport(false);
#endif
// Get the AppWindow so we can configure its initial title and size
auto appWindow{reactNativeWin32App.AppWindow()};
appWindow.Title(L"Nuvio");
appWindow.Resize({1000, 1000});
// Get the ReactViewOptions so we can set the initial RN component to load
auto viewOptions{reactNativeWin32App.ReactViewOptions()};
viewOptions.ComponentName(L"Nuvio");
// Start the app
reactNativeWin32App.Start();
}

3
windows/Nuvio/Nuvio.h Normal file
View file

@ -0,0 +1,3 @@
#pragma once
#include "resource.h"

BIN
windows/Nuvio/Nuvio.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
windows/Nuvio/Nuvio.rc Normal file

Binary file not shown.

139
windows/Nuvio/Nuvio.vcxproj Normal file
View file

@ -0,0 +1,139 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This project was created with react-native-windows 0.81.0 -->
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(SolutionDir)\ExperimentalFeatures.props" Condition="Exists('$(SolutionDir)\ExperimentalFeatures.props')" />
<PropertyGroup Label="Globals">
<CppWinRTOptimized>true</CppWinRTOptimized>
<MinimalCoreWin>true</MinimalCoreWin>
<ProjectGuid>{ED7A6D5F-194A-4BBD-ACC3-70B8C24F6CA8}</ProjectGuid>
<ProjectName>Nuvio</ProjectName>
<Keyword>Win32Proj</Keyword>
<RootNamespace>Nuvio</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>17.0</MinimumVisualStudioVersion>
<AppxPackage>false</AppxPackage>
</PropertyGroup>
<PropertyGroup Label="ReactNativeWindowsProps">
<ReactNativeWindowsDir Condition="'$(ReactNativeWindowsDir)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), 'node_modules\react-native-windows\package.json'))\node_modules\react-native-windows\</ReactNativeWindowsDir>
</PropertyGroup>
<Import Project="$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.WindowsSdk.Default.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="ReactNativeWindowsPropertySheets">
<Import Project="$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.Composition.CppApp.props" />
</ImportGroup>
<ItemDefinitionGroup>
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile>
<WarningLevel>Level4</WarningLevel>
<SDLCheck>true</SDLCheck>
<AdditionalOptions>%(AdditionalOptions) /bigobj</AdditionalOptions>
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
<AdditionalIncludeDirectories>
$(MSBuildThisFileDirectory);
%(AdditionalIncludeDirectories)
</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalDependencies>shell32.lib;user32.lib;windowsapp.lib;%(AdditionalDependenices)</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
<ClCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
<ClCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<PropertyGroup Label="UserMacros" />
<ItemGroup>
<ClInclude Include="Nuvio.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="AutolinkedNativeModules.g.h" />
<ClInclude Include="pch.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="Nuvio.cpp" />
<ClCompile Include="AutolinkedNativeModules.g.cpp" />
<ClCompile Include="pch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Nuvio.rc" />
</ItemGroup>
<ItemGroup>
<Image Include="Nuvio.ico" />
<Image Include="small.ico" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ReactNativeWindowsTargets">
<Import Project="$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.Composition.CppApp.targets" Condition="Exists('$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.Composition.CppApp.targets')" />
</ImportGroup>
<ItemGroup>
</ItemGroup>
<Target Name="EnsureReactNativeWindowsTargets" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references targets in your node_modules\react-native-windows folder. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.Composition.CppApp.props')" Text="$([System.String]::Format('$(ErrorText)', '$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.Composition.CppApp.props'))" />
<Error Condition="!Exists('$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.Composition.CppApp.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(ReactNativeWindowsDir)\PropertySheets\External\Microsoft.ReactNative.Composition.CppApp.targets'))" />
</Target>
</Project>

View file

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="targetver.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Nuvio.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="AutolinkedNativeModules.g.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="pch.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Nuvio.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="AutolinkedNativeModules.g.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Nuvio.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<Image Include="small.ico">
<Filter>Resource Files</Filter>
</Image>
<Image Include="Nuvio.ico">
<Filter>Resource Files</Filter>
</Image>
</ItemGroup>
</Project>

1
windows/Nuvio/pch.cpp Normal file
View file

@ -0,0 +1 @@
#include "pch.h"

38
windows/Nuvio/pch.h Normal file
View file

@ -0,0 +1,38 @@
// pch.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#include "targetver.h"
#define NOMINMAX 1
#define WIN32_LEAN_AND_MEAN 1
#define WINRT_LEAN_AND_MEAN 1
// Windows Header Files
#include <windows.h>
#undef GetCurrentTime
#include <pathcch.h>
#include <unknwn.h>
// WinRT Header Files
#include <winrt/base.h>
#include <CppWinRTIncludes.h>
#include <winrt/Microsoft.ReactNative.Composition.h>
#include <winrt/Microsoft.ReactNative.h>
#include <winrt/Microsoft.UI.Composition.h>
#include <winrt/Microsoft.UI.Content.h>
#include <winrt/Microsoft.UI.Dispatching.h>
#include <winrt/Microsoft.UI.Windowing.h>
#include <winrt/Microsoft.UI.interop.h>
// C RunTime Header Files
#include <malloc.h>
#include <memory.h>
#include <stdlib.h>
#include <tchar.h>
// Reference additional headers your project requires here

17
windows/Nuvio/resource.h Normal file
View file

@ -0,0 +1,17 @@
//
// Microsoft Visual C++ generated include file.
// Used by Nuvio.rc
#define IDI_ICON1 1008
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 130
#define _APS_NEXT_RESOURCE_VALUE 129
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 110
#endif
#endif

BIN
windows/Nuvio/small.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

View file

@ -0,0 +1,8 @@
#pragma once
// Including SDKDDKVer.h defines the highest available Windows platform.
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
#include <SDKDDKVer.h>