mirror of
https://github.com/streetwriters/notesnook.git
synced 2025-12-23 23:19:40 +01:00
mobile: open app from quick-note widget ios
This commit is contained in:
@@ -46,6 +46,7 @@ import { MMKV } from "../common/database/mmkv";
|
||||
import {
|
||||
eClearEditor,
|
||||
eCloseProgressDialog,
|
||||
eOnLoadNote,
|
||||
refreshNotesPage
|
||||
} from "../utils/events";
|
||||
import Sync from "../services/sync";
|
||||
@@ -64,6 +65,8 @@ import {
|
||||
import { useEditorStore } from "../stores/use-editor-store";
|
||||
import { useDragState } from "../screens/settings/editor/state";
|
||||
import { useCallback } from "react";
|
||||
import { clearAppState } from "../screens/editor/tiptap/utils";
|
||||
import { tabBarRef } from "../utils/global-refs";
|
||||
|
||||
const SodiumEventEmitter = new NativeEventEmitter(NativeModules.Sodium);
|
||||
export const useAppEvents = () => {
|
||||
@@ -79,7 +82,8 @@ export const useAppEvents = () => {
|
||||
prevState: null,
|
||||
showingDialog: false,
|
||||
removeInternetStateListener: null,
|
||||
isReconnecting: false
|
||||
isReconnecting: false,
|
||||
initialUrl: null
|
||||
});
|
||||
|
||||
const onLoadingAttachmentProgress = (data) => {
|
||||
@@ -165,22 +169,24 @@ export const useAppEvents = () => {
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (!refValues.current.initialUrl) {
|
||||
Linking.getInitialURL().then((url) => {
|
||||
refValues.current.initialUrl = url;
|
||||
});
|
||||
}
|
||||
let sub;
|
||||
if (!loading && !verify) {
|
||||
setTimeout(() => {
|
||||
sub = AppState.addEventListener("change", onAppStateChanged);
|
||||
}, 1000);
|
||||
(async () => {
|
||||
try {
|
||||
let url = await Linking.getInitialURL();
|
||||
if (url?.startsWith("https://app.notesnook.com/account/verified")) {
|
||||
await onEmailVerified();
|
||||
}
|
||||
await onUserUpdated();
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
if (
|
||||
refValues.current.initialUrl?.startsWith(
|
||||
"https://app.notesnook.com/account/verified"
|
||||
)
|
||||
) {
|
||||
onEmailVerified();
|
||||
}
|
||||
})();
|
||||
}, 1000);
|
||||
onUserUpdated();
|
||||
refValues.current.removeInternetStateListener = NetInfo.addEventListener(
|
||||
onInternetStateChanged
|
||||
);
|
||||
@@ -223,7 +229,11 @@ export const useAppEvents = () => {
|
||||
try {
|
||||
if (url.startsWith("https://app.notesnook.com/account/verified")) {
|
||||
await onEmailVerified();
|
||||
} else {
|
||||
} else if (url.startsWith("ShareMedia://QuickNoteWidget")) {
|
||||
clearAppState();
|
||||
editorState().movedAway = false;
|
||||
eSendEvent(eOnLoadNote, { type: "new" });
|
||||
tabBarRef.current?.goToPage(1, false);
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
@@ -21,6 +21,7 @@ import { useEffect } from "react";
|
||||
import { NativeEventEmitter, NativeModule } from "react-native";
|
||||
import { useRef } from "react";
|
||||
import { Platform } from "react-native";
|
||||
import { Linking } from "react-native";
|
||||
const ShortcutsEmitter = new NativeEventEmitter(
|
||||
Shortcuts as unknown as NativeModule
|
||||
);
|
||||
@@ -46,6 +47,11 @@ export const useShortcutManager = ({
|
||||
}, [shortcuts]);
|
||||
|
||||
useEffect(() => {
|
||||
Linking.getInitialURL().then((url) => {
|
||||
if (url?.startsWith("ShareMedia://QuickNoteWidget")) {
|
||||
onShortcutPressed(defaultShortcuts[0]);
|
||||
}
|
||||
});
|
||||
Shortcuts.getInitialShortcut().then((shortcut) => {
|
||||
if (initialShortcutRecieved.current) return;
|
||||
onShortcutPressed(shortcut);
|
||||
|
||||
@@ -98,10 +98,12 @@ const _TabsHolder = () => {
|
||||
clearAppState();
|
||||
if (!tabBarRef.current) {
|
||||
await sleep(3000);
|
||||
eSendEvent(eOnLoadNote, { type: "new" });
|
||||
editorState().movedAway = false;
|
||||
tabBarRef.current?.goToPage(1, false);
|
||||
return;
|
||||
}
|
||||
eSendEvent(eOnLoadNote, { type: "new" });
|
||||
editorState().movedAway = false;
|
||||
tabBarRef.current?.goToPage(1, false);
|
||||
}
|
||||
|
||||
@@ -38,7 +38,6 @@ RCTBridge *bridge;
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
||||
{
|
||||
RCTAppSetupPrepareApp(application);
|
||||
shareViewController = [UIViewController new];
|
||||
bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
|
||||
|
||||
#if RCT_NEW_ARCH_ENABLED
|
||||
@@ -49,43 +48,19 @@ RCTBridge *bridge;
|
||||
bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;
|
||||
#endif
|
||||
|
||||
NSURL *url = (NSURL *) [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
|
||||
if (url != nil) {
|
||||
navController = [[UINavigationController alloc] initWithRootViewController:shareViewController];
|
||||
rootViewController = [UIViewController new];
|
||||
NSDictionary *initProps = [self prepareInitialProps];
|
||||
UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"Notesnook" , initProps);
|
||||
|
||||
if (@available(iOS 13.0, *)) {
|
||||
rootView.backgroundColor = [UIColor systemBackgroundColor];
|
||||
} else {
|
||||
rootViewController = [UIViewController new];
|
||||
navController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
|
||||
rootView.backgroundColor = [UIColor whiteColor];
|
||||
}
|
||||
|
||||
|
||||
navController.navigationBarHidden = YES;
|
||||
|
||||
if (url != nil) {
|
||||
RCTRootView *shareView = [[RCTRootView alloc] initWithBridge:bridge
|
||||
moduleName:@"QuickNoteIOS"
|
||||
initialProperties:nil];
|
||||
if (@available(iOS 13.0, *)) {
|
||||
shareView.backgroundColor = [UIColor systemBackgroundColor];
|
||||
} else {
|
||||
shareView.backgroundColor = [UIColor whiteColor];
|
||||
}
|
||||
shareViewController.view = shareView;
|
||||
[RNBootSplash initWithStoryboard:@"BootSplash" rootView:shareView];
|
||||
} else {
|
||||
NSDictionary *initProps = [self prepareInitialProps];
|
||||
UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"Notesnook" , initProps);
|
||||
|
||||
if (@available(iOS 13.0, *)) {
|
||||
rootView.backgroundColor = [UIColor systemBackgroundColor];
|
||||
} else {
|
||||
rootView.backgroundColor = [UIColor whiteColor];
|
||||
}
|
||||
rootViewController.view = rootView;
|
||||
[RNBootSplash initWithStoryboard:@"BootSplash" rootView:rootView];
|
||||
}
|
||||
|
||||
rootViewController.view = rootView;
|
||||
[RNBootSplash initWithStoryboard:@"BootSplash" rootView:rootView];
|
||||
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
||||
self.window.rootViewController = navController;
|
||||
self.window.rootViewController = rootViewController;
|
||||
[self.window makeKeyAndVisible];
|
||||
return YES;
|
||||
}
|
||||
@@ -119,44 +94,13 @@ RCTBridge *bridge;
|
||||
}
|
||||
|
||||
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
|
||||
[RNShortcuts performActionForShortcutItem:shortcutItem completionHandler:completionHandler];
|
||||
[RNShortcuts performActionForShortcutItem:shortcutItem completionHandler:completionHandler];
|
||||
}
|
||||
|
||||
- (BOOL)application:(UIApplication *)application
|
||||
openURL:(NSURL *)url
|
||||
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
|
||||
{
|
||||
|
||||
if ([url.absoluteString isEqual:@"ShareMedia://QuickNoteWidget"]) {
|
||||
if (rootViewController != nil) {
|
||||
|
||||
RCTRootView *shareView = [[RCTRootView alloc] initWithBridge:bridge
|
||||
moduleName:@"QuickNoteIOS"
|
||||
initialProperties:nil];
|
||||
shareView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
|
||||
shareViewController.view = shareView;
|
||||
[navController pushViewController:shareViewController animated:false];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ([url.absoluteString isEqual:@"ShareMedia://MainApp"]) {
|
||||
if (rootViewController == nil) {
|
||||
UIApplication *app = [UIApplication sharedApplication];
|
||||
[app performSelector:@selector(suspend)];
|
||||
[NSThread sleepForTimeInterval:1.0];
|
||||
exit(0);
|
||||
} else {
|
||||
UIApplication *app = [UIApplication sharedApplication];
|
||||
[app performSelector:@selector(suspend)];
|
||||
[NSThread sleepForTimeInterval:0.5];
|
||||
[navController popToRootViewControllerAnimated:false];
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
return [RCTLinkingManager application:application openURL:url options:options];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user