navigator add openUrl
This commit is contained in:
parent
9c520e1dc5
commit
78d4f51314
@ -15,6 +15,9 @@
|
|||||||
*/
|
*/
|
||||||
package pub.doric.plugin;
|
package pub.doric.plugin;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.net.Uri;
|
||||||
|
|
||||||
import com.github.pengfeizhou.jscore.ArchiveException;
|
import com.github.pengfeizhou.jscore.ArchiveException;
|
||||||
import com.github.pengfeizhou.jscore.JSDecoder;
|
import com.github.pengfeizhou.jscore.JSDecoder;
|
||||||
import com.github.pengfeizhou.jscore.JSObject;
|
import com.github.pengfeizhou.jscore.JSObject;
|
||||||
@ -84,4 +87,17 @@ public class NavigatorPlugin extends DoricJavaPlugin {
|
|||||||
promise.reject(new JavaValue("Navigator not implemented"));
|
promise.reject(new JavaValue("Navigator not implemented"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DoricMethod(thread = ThreadMode.UI)
|
||||||
|
public void openUrl(String url, DoricPromise promise) {
|
||||||
|
try {
|
||||||
|
Uri uri = Uri.parse(url);
|
||||||
|
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||||
|
intent.setData(uri);
|
||||||
|
getDoricContext().getContext().startActivity(intent);
|
||||||
|
promise.resolve();
|
||||||
|
} catch (Exception e) {
|
||||||
|
promise.reject(new JavaValue(e.getLocalizedMessage()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,17 @@ class NaivgatorDemo extends Panel {
|
|||||||
navigator(context).pop()
|
navigator(context).pop()
|
||||||
},
|
},
|
||||||
} as IText),
|
} as IText),
|
||||||
|
label('OpenURL').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: Color.WHITE,
|
||||||
|
layoutConfig: layoutConfig().just(),
|
||||||
|
onClick: () => {
|
||||||
|
navigator(context).openUrl("https://doric.pub")
|
||||||
|
},
|
||||||
|
} as IText),
|
||||||
]).apply({
|
]).apply({
|
||||||
layoutConfig: layoutConfig().most().configHeight(LayoutSpec.FIT),
|
layoutConfig: layoutConfig().most().configHeight(LayoutSpec.FIT),
|
||||||
gravity: gravity().center(),
|
gravity: gravity().center(),
|
||||||
|
@ -49,4 +49,16 @@ - (void)pop:(NSDictionary *)params {
|
|||||||
[self.doricContext.navigator doric_navigator_pop:animated];
|
[self.doricContext.navigator doric_navigator_pop:animated];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)openUrl:(NSString *)urlString withPromise:(DoricPromise *)promise {
|
||||||
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
|
NSURL *url = [NSURL URLWithString:urlString];
|
||||||
|
if ([[UIApplication sharedApplication] canOpenURL:url]) {
|
||||||
|
[[UIApplication sharedApplication] openURL:url];
|
||||||
|
[promise resolve:nil];
|
||||||
|
} else {
|
||||||
|
[promise reject:@"Cannot open"];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
@end
|
@end
|
@ -2662,18 +2662,22 @@ function navbar(context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function navigator(context) {
|
function navigator(context) {
|
||||||
|
var moduleName = "navigator";
|
||||||
return {
|
return {
|
||||||
push: function (source, config) {
|
push: function (source, config) {
|
||||||
if (config && config.extra) {
|
if (config && config.extra) {
|
||||||
config.extra = JSON.stringify(config.extra);
|
config.extra = JSON.stringify(config.extra);
|
||||||
}
|
}
|
||||||
return context.callNative('navigator', 'push', {
|
return context.callNative(moduleName, 'push', {
|
||||||
source: source, config: config
|
source: source, config: config
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
pop: function (animated) {
|
pop: function (animated) {
|
||||||
if (animated === void 0) { animated = true; }
|
if (animated === void 0) { animated = true; }
|
||||||
return context.callNative('navigator', 'pop', { animated: animated });
|
return context.callNative(moduleName, 'pop', { animated: animated });
|
||||||
|
},
|
||||||
|
openUrl: function (url) {
|
||||||
|
return context.callNative(moduleName, "openUrl", url);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -2004,17 +2004,21 @@ function navbar(context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function navigator(context) {
|
function navigator(context) {
|
||||||
|
const moduleName = "navigator";
|
||||||
return {
|
return {
|
||||||
push: (source, config) => {
|
push: (source, config) => {
|
||||||
if (config && config.extra) {
|
if (config && config.extra) {
|
||||||
config.extra = JSON.stringify(config.extra);
|
config.extra = JSON.stringify(config.extra);
|
||||||
}
|
}
|
||||||
return context.callNative('navigator', 'push', {
|
return context.callNative(moduleName, 'push', {
|
||||||
source, config
|
source, config
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
pop: (animated = true) => {
|
pop: (animated = true) => {
|
||||||
return context.callNative('navigator', 'pop', { animated });
|
return context.callNative(moduleName, 'pop', { animated });
|
||||||
|
},
|
||||||
|
openUrl: (url) => {
|
||||||
|
return context.callNative(moduleName, "openUrl", url);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -3463,17 +3463,21 @@ function navbar(context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function navigator(context) {
|
function navigator(context) {
|
||||||
|
const moduleName = "navigator";
|
||||||
return {
|
return {
|
||||||
push: (source, config) => {
|
push: (source, config) => {
|
||||||
if (config && config.extra) {
|
if (config && config.extra) {
|
||||||
config.extra = JSON.stringify(config.extra);
|
config.extra = JSON.stringify(config.extra);
|
||||||
}
|
}
|
||||||
return context.callNative('navigator', 'push', {
|
return context.callNative(moduleName, 'push', {
|
||||||
source, config
|
source, config
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
pop: (animated = true) => {
|
pop: (animated = true) => {
|
||||||
return context.callNative('navigator', 'pop', { animated });
|
return context.callNative(moduleName, 'pop', { animated });
|
||||||
|
},
|
||||||
|
openUrl: (url) => {
|
||||||
|
return context.callNative(moduleName, "openUrl", url);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
1
doric-js/index.d.ts
vendored
1
doric-js/index.d.ts
vendored
@ -909,6 +909,7 @@ declare module 'doric/lib/src/native/navigator' {
|
|||||||
extra?: object | undefined;
|
extra?: object | undefined;
|
||||||
} | undefined) => Promise<any>;
|
} | undefined) => Promise<any>;
|
||||||
pop: (animated?: boolean) => Promise<any>;
|
pop: (animated?: boolean) => Promise<any>;
|
||||||
|
openUrl: (url: string) => Promise<any>;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1
doric-js/lib/src/native/navigator.d.ts
vendored
1
doric-js/lib/src/native/navigator.d.ts
vendored
@ -6,4 +6,5 @@ export declare function navigator(context: BridgeContext): {
|
|||||||
extra?: object | undefined;
|
extra?: object | undefined;
|
||||||
} | undefined) => Promise<any>;
|
} | undefined) => Promise<any>;
|
||||||
pop: (animated?: boolean) => Promise<any>;
|
pop: (animated?: boolean) => Promise<any>;
|
||||||
|
openUrl: (url: string) => Promise<any>;
|
||||||
};
|
};
|
||||||
|
@ -1,15 +1,19 @@
|
|||||||
export function navigator(context) {
|
export function navigator(context) {
|
||||||
|
const moduleName = "navigator";
|
||||||
return {
|
return {
|
||||||
push: (source, config) => {
|
push: (source, config) => {
|
||||||
if (config && config.extra) {
|
if (config && config.extra) {
|
||||||
config.extra = JSON.stringify(config.extra);
|
config.extra = JSON.stringify(config.extra);
|
||||||
}
|
}
|
||||||
return context.callNative('navigator', 'push', {
|
return context.callNative(moduleName, 'push', {
|
||||||
source, config
|
source, config
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
pop: (animated = true) => {
|
pop: (animated = true) => {
|
||||||
return context.callNative('navigator', 'pop', { animated });
|
return context.callNative(moduleName, 'pop', { animated });
|
||||||
|
},
|
||||||
|
openUrl: (url) => {
|
||||||
|
return context.callNative(moduleName, "openUrl", url);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
import { BridgeContext } from "../runtime/global"
|
import { BridgeContext } from "../runtime/global"
|
||||||
|
|
||||||
export function navigator(context: BridgeContext) {
|
export function navigator(context: BridgeContext) {
|
||||||
|
const moduleName = "navigator"
|
||||||
return {
|
return {
|
||||||
push: (source: string, config?: {
|
push: (source: string, config?: {
|
||||||
alias?: string,
|
alias?: string,
|
||||||
@ -25,12 +26,15 @@ export function navigator(context: BridgeContext) {
|
|||||||
if (config && config.extra) {
|
if (config && config.extra) {
|
||||||
(config as any).extra = JSON.stringify(config.extra)
|
(config as any).extra = JSON.stringify(config.extra)
|
||||||
}
|
}
|
||||||
return context.callNative('navigator', 'push', {
|
return context.callNative(moduleName, 'push', {
|
||||||
source, config
|
source, config
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
pop: (animated = true) => {
|
pop: (animated = true) => {
|
||||||
return context.callNative('navigator', 'pop', { animated })
|
return context.callNative(moduleName, 'pop', { animated })
|
||||||
|
},
|
||||||
|
openUrl: (url: string) => {
|
||||||
|
return context.callNative(moduleName, "openUrl", url)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
8
doric-web/dist/index.js
vendored
8
doric-web/dist/index.js
vendored
@ -3521,17 +3521,21 @@ function navbar(context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function navigator(context) {
|
function navigator(context) {
|
||||||
|
const moduleName = "navigator";
|
||||||
return {
|
return {
|
||||||
push: (source, config) => {
|
push: (source, config) => {
|
||||||
if (config && config.extra) {
|
if (config && config.extra) {
|
||||||
config.extra = JSON.stringify(config.extra);
|
config.extra = JSON.stringify(config.extra);
|
||||||
}
|
}
|
||||||
return context.callNative('navigator', 'push', {
|
return context.callNative(moduleName, 'push', {
|
||||||
source, config
|
source, config
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
pop: (animated = true) => {
|
pop: (animated = true) => {
|
||||||
return context.callNative('navigator', 'pop', { animated });
|
return context.callNative(moduleName, 'pop', { animated });
|
||||||
|
},
|
||||||
|
openUrl: (url) => {
|
||||||
|
return context.callNative(moduleName, "openUrl", url);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
2
doric-web/dist/index.js.map
vendored
2
doric-web/dist/index.js.map
vendored
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user