@akanjs/next 0.0.54 → 0.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bootCsr.js +52 -28
- package/bootCsr.mjs +138 -0
- package/createNextMiddleware.js +42 -13
- package/createNextMiddleware.mjs +49 -0
- package/createRobotPage.js +22 -3
- package/createRobotPage.mjs +15 -0
- package/createSitemapPage.js +22 -3
- package/createSitemapPage.mjs +7 -0
- package/index.js +59 -40
- package/index.mjs +41 -0
- package/lazy.js +34 -5
- package/lazy.mjs +6 -0
- package/makePageProto.js +32 -13
- package/makePageProto.mjs +114 -0
- package/package.json +27 -3
- package/types.js +15 -0
- package/types.mjs +0 -0
- package/useCamera.js +36 -17
- package/useCamera.mjs +77 -0
- package/useCodepush.js +54 -25
- package/useCodepush.mjs +74 -0
- package/useContact.js +31 -12
- package/useContact.mjs +36 -0
- package/useCsrValues.js +74 -59
- package/useCsrValues.mjs +596 -0
- package/useDebounce.js +24 -5
- package/useDebounce.mjs +18 -0
- package/useFetch.js +25 -6
- package/useFetch.mjs +23 -0
- package/useGeoLocation.js +25 -6
- package/useGeoLocation.mjs +21 -0
- package/useHistory.js +29 -10
- package/useHistory.mjs +46 -0
- package/useInterval.js +26 -7
- package/useInterval.mjs +21 -0
- package/useLocation.js +24 -5
- package/useLocation.mjs +59 -0
- package/usePurchase.js +29 -10
- package/usePurchase.mjs +120 -0
- package/usePushNoti.js +35 -16
- package/usePushNoti.mjs +42 -0
- package/useThrottle.js +25 -6
- package/useThrottle.mjs +20 -0
package/lazy.js
CHANGED
|
@@ -1,6 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
6
18
|
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var lazy_exports = {};
|
|
29
|
+
__export(lazy_exports, {
|
|
30
|
+
lazy: () => lazy
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(lazy_exports);
|
|
33
|
+
var import_dynamic = __toESM(require("next/dynamic"));
|
|
34
|
+
//! next build를 위해서 lint 무시
|
|
35
|
+
const lazy = (loader, option) => (0, import_dynamic.default)(loader, { ...option ?? {} });
|
package/lazy.mjs
ADDED
package/makePageProto.js
CHANGED
|
@@ -1,15 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var makePageProto_exports = {};
|
|
19
|
+
__export(makePageProto_exports, {
|
|
20
|
+
makePageProto: () => makePageProto
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(makePageProto_exports);
|
|
23
|
+
var import_base = require("@akanjs/base");
|
|
24
|
+
var import_client = require("@akanjs/client");
|
|
25
|
+
var import_common = require("@akanjs/common");
|
|
4
26
|
const getPageInfo = () => {
|
|
5
|
-
if (baseClientEnv.side !== "server") {
|
|
27
|
+
if (import_base.baseClientEnv.side !== "server") {
|
|
6
28
|
return {
|
|
7
29
|
locale: window.location.pathname.split("/")[1] ?? "en",
|
|
8
30
|
path: "/" + window.location.pathname.split("/").slice(2).join("/")
|
|
9
31
|
};
|
|
10
32
|
}
|
|
11
|
-
const locale = getHeader("x-locale") ?? "en";
|
|
12
|
-
const path = getHeader("x-path") ?? "/";
|
|
33
|
+
const locale = (0, import_client.getHeader)("x-locale") ?? "en";
|
|
34
|
+
const path = (0, import_client.getHeader)("x-path") ?? "/";
|
|
13
35
|
return { locale, path };
|
|
14
36
|
};
|
|
15
37
|
const langIdx = { en: 0, ko: 1, zhChs: 2, zhCht: 3 };
|
|
@@ -17,9 +39,9 @@ const dictionary = {};
|
|
|
17
39
|
const translator = (lang, key, param) => {
|
|
18
40
|
const idx = langIdx[lang];
|
|
19
41
|
try {
|
|
20
|
-
const msg = pathGet(key, dictionary)?.[idx];
|
|
42
|
+
const msg = (0, import_common.pathGet)(key, dictionary)?.[idx];
|
|
21
43
|
if (!msg) {
|
|
22
|
-
Logger.error(`No translation for ${key}`);
|
|
44
|
+
import_common.Logger.error(`No translation for ${key}`);
|
|
23
45
|
return key;
|
|
24
46
|
}
|
|
25
47
|
return param ? msg.replace(/{([^}]+)}/g, (_, key2) => param[key2]) : msg;
|
|
@@ -29,9 +51,9 @@ const translator = (lang, key, param) => {
|
|
|
29
51
|
};
|
|
30
52
|
translator.rich = (lang, key, param) => {
|
|
31
53
|
const idx = langIdx[lang];
|
|
32
|
-
const msg = pathGet(key, dictionary)?.[idx];
|
|
54
|
+
const msg = (0, import_common.pathGet)(key, dictionary)?.[idx];
|
|
33
55
|
if (!msg) {
|
|
34
|
-
Logger.error(`No translation for ${key}`);
|
|
56
|
+
import_common.Logger.error(`No translation for ${key}`);
|
|
35
57
|
return key;
|
|
36
58
|
}
|
|
37
59
|
return param ? msg.replace(/{([^}]+)}/g, (_, key2) => param[key2]) : msg;
|
|
@@ -109,6 +131,3 @@ const makePageProto = (locales) => {
|
|
|
109
131
|
return { path, l, lang };
|
|
110
132
|
};
|
|
111
133
|
};
|
|
112
|
-
export {
|
|
113
|
-
makePageProto
|
|
114
|
-
};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { baseClientEnv } from "@akanjs/base";
|
|
2
|
+
import { getHeader } from "@akanjs/client";
|
|
3
|
+
import { Logger, pathGet } from "@akanjs/common";
|
|
4
|
+
const getPageInfo = () => {
|
|
5
|
+
if (baseClientEnv.side !== "server") {
|
|
6
|
+
return {
|
|
7
|
+
locale: window.location.pathname.split("/")[1] ?? "en",
|
|
8
|
+
path: "/" + window.location.pathname.split("/").slice(2).join("/")
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
const locale = getHeader("x-locale") ?? "en";
|
|
12
|
+
const path = getHeader("x-path") ?? "/";
|
|
13
|
+
return { locale, path };
|
|
14
|
+
};
|
|
15
|
+
const langIdx = { en: 0, ko: 1, zhChs: 2, zhCht: 3 };
|
|
16
|
+
const dictionary = {};
|
|
17
|
+
const translator = (lang, key, param) => {
|
|
18
|
+
const idx = langIdx[lang];
|
|
19
|
+
try {
|
|
20
|
+
const msg = pathGet(key, dictionary)?.[idx];
|
|
21
|
+
if (!msg) {
|
|
22
|
+
Logger.error(`No translation for ${key}`);
|
|
23
|
+
return key;
|
|
24
|
+
}
|
|
25
|
+
return param ? msg.replace(/{([^}]+)}/g, (_, key2) => param[key2]) : msg;
|
|
26
|
+
} catch (e) {
|
|
27
|
+
return key;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
translator.rich = (lang, key, param) => {
|
|
31
|
+
const idx = langIdx[lang];
|
|
32
|
+
const msg = pathGet(key, dictionary)?.[idx];
|
|
33
|
+
if (!msg) {
|
|
34
|
+
Logger.error(`No translation for ${key}`);
|
|
35
|
+
return key;
|
|
36
|
+
}
|
|
37
|
+
return param ? msg.replace(/{([^}]+)}/g, (_, key2) => param[key2]) : msg;
|
|
38
|
+
};
|
|
39
|
+
const makePageProto = (locales) => {
|
|
40
|
+
locales.forEach((locale) => {
|
|
41
|
+
Object.keys(locale).forEach((key) => dictionary[key] = Object.assign(dictionary[key] ?? {}, locale[key]));
|
|
42
|
+
});
|
|
43
|
+
return () => {
|
|
44
|
+
const { locale, path } = getPageInfo();
|
|
45
|
+
const lang = locale;
|
|
46
|
+
const l = (key, param) => translator(lang, key, param);
|
|
47
|
+
l.rich = (key, param) => /* @__PURE__ */ React.createElement(
|
|
48
|
+
"span",
|
|
49
|
+
{
|
|
50
|
+
dangerouslySetInnerHTML: {
|
|
51
|
+
__html: translator.rich(lang, key, {
|
|
52
|
+
...param,
|
|
53
|
+
// strong: (chunks: string) => `<b>${chunks}</b>`,
|
|
54
|
+
// "bg-primary": (chunks: string) => `<span className="bg-primary text-base-100">${chunks}</span>`,
|
|
55
|
+
// primary: (chunks: string) => `<span className="bg-base-100 text-primary">${chunks}</span>`,
|
|
56
|
+
br: `<br />`
|
|
57
|
+
})
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
l.field = (model, field) => {
|
|
62
|
+
const key = `${model}.${field}`;
|
|
63
|
+
return l(key);
|
|
64
|
+
};
|
|
65
|
+
l.desc = (model, field) => {
|
|
66
|
+
const key = `${model}.desc-${field}`;
|
|
67
|
+
return l(key);
|
|
68
|
+
};
|
|
69
|
+
l.enum = (model, field, value) => {
|
|
70
|
+
const key = `${model}.enum-${field}-${value}`;
|
|
71
|
+
return l(key);
|
|
72
|
+
};
|
|
73
|
+
l.enumdesc = (model, field, value) => {
|
|
74
|
+
const key = `${model}.enumdesc-${field}-${value}`;
|
|
75
|
+
return l(key);
|
|
76
|
+
};
|
|
77
|
+
l.api = (model, endpoint) => {
|
|
78
|
+
const key = `${model}.api-${endpoint}`;
|
|
79
|
+
return l(key);
|
|
80
|
+
};
|
|
81
|
+
l.apidesc = (model, endpoint) => {
|
|
82
|
+
const key = `${model}.apidesc-${endpoint}`;
|
|
83
|
+
return l(key);
|
|
84
|
+
};
|
|
85
|
+
l.arg = (model, endpoint, arg) => {
|
|
86
|
+
const key = `${model}.arg-${endpoint}-${arg}`;
|
|
87
|
+
return l(key);
|
|
88
|
+
};
|
|
89
|
+
l.argdesc = (model, endpoint, arg) => {
|
|
90
|
+
const key = `${model}.argdesc-${endpoint}-${arg}`;
|
|
91
|
+
return l(key);
|
|
92
|
+
};
|
|
93
|
+
l.qry = (model, queryKey) => {
|
|
94
|
+
const key = `${model}.qry-${queryKey}`;
|
|
95
|
+
return l(key);
|
|
96
|
+
};
|
|
97
|
+
l.qrydesc = (model, queryKey) => {
|
|
98
|
+
const key = `${model}.qrydesc-${queryKey}`;
|
|
99
|
+
return l(key);
|
|
100
|
+
};
|
|
101
|
+
l.qarg = (model, queryKey, arg) => {
|
|
102
|
+
const key = `${model}.qarg-${queryKey}-${arg}`;
|
|
103
|
+
return l(key);
|
|
104
|
+
};
|
|
105
|
+
l.qargdesc = (model, queryKey, arg) => {
|
|
106
|
+
const key = `${model}.qargdesc-${queryKey}-${arg}`;
|
|
107
|
+
return l(key);
|
|
108
|
+
};
|
|
109
|
+
return { path, l, lang };
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
export {
|
|
113
|
+
makePageProto
|
|
114
|
+
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@akanjs/next",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"type": "
|
|
3
|
+
"version": "0.0.56",
|
|
4
|
+
"type": "commonjs",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -14,5 +14,29 @@
|
|
|
14
14
|
"engines": {
|
|
15
15
|
"node": ">=22"
|
|
16
16
|
},
|
|
17
|
-
"dependencies": {
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@capacitor-community/contacts": "^6.1.1",
|
|
19
|
+
"@capacitor-community/fcm": "^7.1.1",
|
|
20
|
+
"@capacitor/app": "^7.0.1",
|
|
21
|
+
"@capacitor/camera": "^7.0.1",
|
|
22
|
+
"@capacitor/device": "^7.0.1",
|
|
23
|
+
"@capacitor/geolocation": "^7.1.2",
|
|
24
|
+
"@capacitor/push-notifications": "^7.0.1",
|
|
25
|
+
"@capgo/capacitor-updater": "^7.0.50",
|
|
26
|
+
"@formatjs/intl-localematcher": "^0.5.10",
|
|
27
|
+
"@react-spring/web": "^9.7.5",
|
|
28
|
+
"@use-gesture/react": "^10.3.1",
|
|
29
|
+
"axios": "^1.7.9",
|
|
30
|
+
"cordova-plugin-purchase": "^13.12.1",
|
|
31
|
+
"negotiator": "^1.0.0",
|
|
32
|
+
"next": "^15.3.2",
|
|
33
|
+
"react": "^18.3.1",
|
|
34
|
+
"react-dom": "^18.3.1"
|
|
35
|
+
},
|
|
36
|
+
"exports": {
|
|
37
|
+
".": {
|
|
38
|
+
"require": "./index.js",
|
|
39
|
+
"import": "./index.mjs"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
18
42
|
}
|
package/types.js
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
for (let key of __getOwnPropNames(from))
|
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
+
}
|
|
11
|
+
return to;
|
|
12
|
+
};
|
|
13
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
14
|
+
var types_exports = {};
|
|
15
|
+
module.exports = __toCommonJS(types_exports);
|
package/types.mjs
ADDED
|
File without changes
|
package/useCamera.js
CHANGED
|
@@ -1,14 +1,36 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var useCamera_exports = {};
|
|
20
|
+
__export(useCamera_exports, {
|
|
21
|
+
useCamera: () => useCamera
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(useCamera_exports);
|
|
24
|
+
var import_client = require("@akanjs/client");
|
|
25
|
+
var import_camera = require("@capacitor/camera");
|
|
26
|
+
var import_react = require("react");
|
|
5
27
|
const useCamera = () => {
|
|
6
|
-
const [permissions, setPermissions] = useState({ camera: "prompt", photos: "prompt" });
|
|
28
|
+
const [permissions, setPermissions] = (0, import_react.useState)({ camera: "prompt", photos: "prompt" });
|
|
7
29
|
const checkPermission = async (type) => {
|
|
8
30
|
try {
|
|
9
31
|
if (type === "photos") {
|
|
10
32
|
if (permissions.photos === "prompt") {
|
|
11
|
-
const { photos } = await Camera.requestPermissions();
|
|
33
|
+
const { photos } = await import_camera.Camera.requestPermissions();
|
|
12
34
|
setPermissions((prev) => ({ ...prev, photos }));
|
|
13
35
|
} else if (permissions.photos === "denied") {
|
|
14
36
|
location.assign("app-settings:");
|
|
@@ -16,7 +38,7 @@ const useCamera = () => {
|
|
|
16
38
|
}
|
|
17
39
|
} else if (type === "camera") {
|
|
18
40
|
if (permissions.camera === "prompt") {
|
|
19
|
-
const { camera } = await Camera.requestPermissions();
|
|
41
|
+
const { camera } = await import_camera.Camera.requestPermissions();
|
|
20
42
|
setPermissions((prev) => ({ ...prev, camera }));
|
|
21
43
|
} else if (permissions.camera === "denied") {
|
|
22
44
|
location.assign("app-settings:");
|
|
@@ -24,7 +46,7 @@ const useCamera = () => {
|
|
|
24
46
|
}
|
|
25
47
|
} else {
|
|
26
48
|
if (permissions.camera === "prompt" || permissions.photos === "prompt") {
|
|
27
|
-
const permissions2 = await Camera.requestPermissions();
|
|
49
|
+
const permissions2 = await import_camera.Camera.requestPermissions();
|
|
28
50
|
setPermissions(permissions2);
|
|
29
51
|
} else if (permissions.camera === "denied" || permissions.photos === "denied") {
|
|
30
52
|
location.assign("app-settings:");
|
|
@@ -35,15 +57,15 @@ const useCamera = () => {
|
|
|
35
57
|
}
|
|
36
58
|
};
|
|
37
59
|
const getPhoto = async (src = "prompt") => {
|
|
38
|
-
const source = device.info.platform !== "web" ? src === "prompt" ? CameraSource.Prompt : src === "camera" ? CameraSource.Camera : CameraSource.Photos : CameraSource.Photos;
|
|
60
|
+
const source = import_client.device.info.platform !== "web" ? src === "prompt" ? import_camera.CameraSource.Prompt : src === "camera" ? import_camera.CameraSource.Camera : import_camera.CameraSource.Photos : import_camera.CameraSource.Photos;
|
|
39
61
|
const permission = src === "prompt" ? "all" : src === "camera" ? "camera" : "photos";
|
|
40
62
|
void checkPermission(permission);
|
|
41
63
|
try {
|
|
42
|
-
const photo = await Camera.getPhoto({
|
|
64
|
+
const photo = await import_camera.Camera.getPhoto({
|
|
43
65
|
quality: 100,
|
|
44
66
|
source,
|
|
45
67
|
allowEditing: false,
|
|
46
|
-
resultType: CameraResultType.DataUrl,
|
|
68
|
+
resultType: import_camera.CameraResultType.DataUrl,
|
|
47
69
|
promptLabelHeader: "\uD504\uB85C\uD544 \uC0AC\uC9C4\uC744 \uC62C\uB824\uC8FC\uC138\uC694",
|
|
48
70
|
promptLabelPhoto: "\uC568\uBC94\uC5D0\uC11C \uC120\uD0DD\uD558\uAE30",
|
|
49
71
|
promptLabelPicture: "\uC0AC\uC9C4 \uCC0D\uAE30",
|
|
@@ -57,21 +79,18 @@ const useCamera = () => {
|
|
|
57
79
|
};
|
|
58
80
|
const pickImage = async () => {
|
|
59
81
|
void checkPermission("photos");
|
|
60
|
-
const photo = await Camera.pickImages({
|
|
82
|
+
const photo = await import_camera.Camera.pickImages({
|
|
61
83
|
quality: 90
|
|
62
84
|
});
|
|
63
85
|
return photo;
|
|
64
86
|
};
|
|
65
|
-
useEffect(() => {
|
|
87
|
+
(0, import_react.useEffect)(() => {
|
|
66
88
|
void (async () => {
|
|
67
|
-
if (device.info.platform !== "web") {
|
|
68
|
-
const permissions2 = await Camera.checkPermissions();
|
|
89
|
+
if (import_client.device.info.platform !== "web") {
|
|
90
|
+
const permissions2 = await import_camera.Camera.checkPermissions();
|
|
69
91
|
setPermissions(permissions2);
|
|
70
92
|
}
|
|
71
93
|
})();
|
|
72
94
|
}, []);
|
|
73
95
|
return { permissions, getPhoto, pickImage, checkPermission };
|
|
74
96
|
};
|
|
75
|
-
export {
|
|
76
|
-
useCamera
|
|
77
|
-
};
|
package/useCamera.mjs
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { device } from "@akanjs/client";
|
|
3
|
+
import { Camera, CameraResultType, CameraSource } from "@capacitor/camera";
|
|
4
|
+
import { useEffect, useState } from "react";
|
|
5
|
+
const useCamera = () => {
|
|
6
|
+
const [permissions, setPermissions] = useState({ camera: "prompt", photos: "prompt" });
|
|
7
|
+
const checkPermission = async (type) => {
|
|
8
|
+
try {
|
|
9
|
+
if (type === "photos") {
|
|
10
|
+
if (permissions.photos === "prompt") {
|
|
11
|
+
const { photos } = await Camera.requestPermissions();
|
|
12
|
+
setPermissions((prev) => ({ ...prev, photos }));
|
|
13
|
+
} else if (permissions.photos === "denied") {
|
|
14
|
+
location.assign("app-settings:");
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
} else if (type === "camera") {
|
|
18
|
+
if (permissions.camera === "prompt") {
|
|
19
|
+
const { camera } = await Camera.requestPermissions();
|
|
20
|
+
setPermissions((prev) => ({ ...prev, camera }));
|
|
21
|
+
} else if (permissions.camera === "denied") {
|
|
22
|
+
location.assign("app-settings:");
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
} else {
|
|
26
|
+
if (permissions.camera === "prompt" || permissions.photos === "prompt") {
|
|
27
|
+
const permissions2 = await Camera.requestPermissions();
|
|
28
|
+
setPermissions(permissions2);
|
|
29
|
+
} else if (permissions.camera === "denied" || permissions.photos === "denied") {
|
|
30
|
+
location.assign("app-settings:");
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
} catch (e) {
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const getPhoto = async (src = "prompt") => {
|
|
38
|
+
const source = device.info.platform !== "web" ? src === "prompt" ? CameraSource.Prompt : src === "camera" ? CameraSource.Camera : CameraSource.Photos : CameraSource.Photos;
|
|
39
|
+
const permission = src === "prompt" ? "all" : src === "camera" ? "camera" : "photos";
|
|
40
|
+
void checkPermission(permission);
|
|
41
|
+
try {
|
|
42
|
+
const photo = await Camera.getPhoto({
|
|
43
|
+
quality: 100,
|
|
44
|
+
source,
|
|
45
|
+
allowEditing: false,
|
|
46
|
+
resultType: CameraResultType.DataUrl,
|
|
47
|
+
promptLabelHeader: "\uD504\uB85C\uD544 \uC0AC\uC9C4\uC744 \uC62C\uB824\uC8FC\uC138\uC694",
|
|
48
|
+
promptLabelPhoto: "\uC568\uBC94\uC5D0\uC11C \uC120\uD0DD\uD558\uAE30",
|
|
49
|
+
promptLabelPicture: "\uC0AC\uC9C4 \uCC0D\uAE30",
|
|
50
|
+
promptLabelCancel: "\uCDE8\uC18C"
|
|
51
|
+
});
|
|
52
|
+
return photo;
|
|
53
|
+
} catch (e) {
|
|
54
|
+
if (e === "User cancelled photos app")
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const pickImage = async () => {
|
|
59
|
+
void checkPermission("photos");
|
|
60
|
+
const photo = await Camera.pickImages({
|
|
61
|
+
quality: 90
|
|
62
|
+
});
|
|
63
|
+
return photo;
|
|
64
|
+
};
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
void (async () => {
|
|
67
|
+
if (device.info.platform !== "web") {
|
|
68
|
+
const permissions2 = await Camera.checkPermissions();
|
|
69
|
+
setPermissions(permissions2);
|
|
70
|
+
}
|
|
71
|
+
})();
|
|
72
|
+
}, []);
|
|
73
|
+
return { permissions, getPhoto, pickImage, checkPermission };
|
|
74
|
+
};
|
|
75
|
+
export {
|
|
76
|
+
useCamera
|
|
77
|
+
};
|
package/useCodepush.js
CHANGED
|
@@ -1,23 +1,55 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var useCodepush_exports = {};
|
|
30
|
+
__export(useCodepush_exports, {
|
|
31
|
+
useCodepush: () => useCodepush
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(useCodepush_exports);
|
|
34
|
+
var import_common = require("@akanjs/common");
|
|
35
|
+
var import_app = require("@capacitor/app");
|
|
36
|
+
var import_device = require("@capacitor/device");
|
|
37
|
+
var import_capacitor_updater = require("@capgo/capacitor-updater");
|
|
38
|
+
var import_axios = __toESM(require("axios"));
|
|
39
|
+
var import_react = require("react");
|
|
8
40
|
const useCodepush = ({ serverUrl, branch }) => {
|
|
9
|
-
const [update, setUpdate] = useState(false);
|
|
10
|
-
const [version, setVersion] = useState("");
|
|
41
|
+
const [update, setUpdate] = (0, import_react.useState)(false);
|
|
42
|
+
const [version, setVersion] = (0, import_react.useState)("");
|
|
11
43
|
const initialize = async () => {
|
|
12
|
-
await CapacitorUpdater.notifyAppReady();
|
|
44
|
+
await import_capacitor_updater.CapacitorUpdater.notifyAppReady();
|
|
13
45
|
};
|
|
14
46
|
const checkNewRelease = async () => {
|
|
15
|
-
const info = await Device.getInfo();
|
|
16
|
-
const app = await App.getInfo();
|
|
17
|
-
const pluginVersion = await CapacitorUpdater.getPluginVersion();
|
|
18
|
-
const { deviceId } = await CapacitorUpdater.getDeviceId();
|
|
19
|
-
const { bundle: version2, native } = await CapacitorUpdater.current();
|
|
20
|
-
const builtInversion = await CapacitorUpdater.getBuiltinVersion();
|
|
47
|
+
const info = await import_device.Device.getInfo();
|
|
48
|
+
const app = await import_app.App.getInfo();
|
|
49
|
+
const pluginVersion = await import_capacitor_updater.CapacitorUpdater.getPluginVersion();
|
|
50
|
+
const { deviceId } = await import_capacitor_updater.CapacitorUpdater.getDeviceId();
|
|
51
|
+
const { bundle: version2, native } = await import_capacitor_updater.CapacitorUpdater.current();
|
|
52
|
+
const builtInversion = await import_capacitor_updater.CapacitorUpdater.getBuiltinVersion();
|
|
21
53
|
const appId = app.id;
|
|
22
54
|
const platform = info.platform;
|
|
23
55
|
window.alert(
|
|
@@ -25,7 +57,7 @@ const useCodepush = ({ serverUrl, branch }) => {
|
|
|
25
57
|
current.bundle:${version2.version}
|
|
26
58
|
currennt.native:${native}`
|
|
27
59
|
);
|
|
28
|
-
const { major, minor, patch } = splitVersion(version2.version === "builtin" ? app.version : version2.version);
|
|
60
|
+
const { major, minor, patch } = (0, import_common.splitVersion)(version2.version === "builtin" ? app.version : version2.version);
|
|
29
61
|
const appName = process.env.NEXT_PUBLIC_APP_NAME ?? "";
|
|
30
62
|
const appInfo = {
|
|
31
63
|
appId,
|
|
@@ -42,12 +74,12 @@ currennt.native:${native}`
|
|
|
42
74
|
versionOs: info.osVersion
|
|
43
75
|
};
|
|
44
76
|
const url = serverUrl.replace("lu", "akasys");
|
|
45
|
-
const release = (await
|
|
77
|
+
const release = (await import_axios.default.post(`${url}/release/codepush`, {
|
|
46
78
|
data: { ...appInfo }
|
|
47
79
|
})).data;
|
|
48
80
|
if (!release)
|
|
49
81
|
return;
|
|
50
|
-
const file = (await
|
|
82
|
+
const file = (await import_axios.default.get(`${url}/file/file/${release.appBuild}`)).data;
|
|
51
83
|
return { release, bundleFile: file };
|
|
52
84
|
};
|
|
53
85
|
const codepush = async () => {
|
|
@@ -56,19 +88,16 @@ currennt.native:${native}`
|
|
|
56
88
|
return;
|
|
57
89
|
const { release, bundleFile } = isNewRelease;
|
|
58
90
|
setUpdate(true);
|
|
59
|
-
const bundle = await CapacitorUpdater.download({
|
|
91
|
+
const bundle = await import_capacitor_updater.CapacitorUpdater.download({
|
|
60
92
|
url: bundleFile.url,
|
|
61
|
-
version: mergeVersion(release.major, release.minor, release.patch)
|
|
93
|
+
version: (0, import_common.mergeVersion)(release.major, release.minor, release.patch)
|
|
62
94
|
});
|
|
63
|
-
await CapacitorUpdater.set(bundle);
|
|
95
|
+
await import_capacitor_updater.CapacitorUpdater.set(bundle);
|
|
64
96
|
};
|
|
65
97
|
const getVersion = async () => {
|
|
66
|
-
return await CapacitorUpdater.getBuiltinVersion();
|
|
98
|
+
return await import_capacitor_updater.CapacitorUpdater.getBuiltinVersion();
|
|
67
99
|
};
|
|
68
100
|
const statManager = async () => {
|
|
69
101
|
};
|
|
70
102
|
return { update, version, initialize, checkNewRelease, codepush, statManager };
|
|
71
103
|
};
|
|
72
|
-
export {
|
|
73
|
-
useCodepush
|
|
74
|
-
};
|
package/useCodepush.mjs
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { mergeVersion, splitVersion } from "@akanjs/common";
|
|
3
|
+
import { App } from "@capacitor/app";
|
|
4
|
+
import { Device } from "@capacitor/device";
|
|
5
|
+
import { CapacitorUpdater } from "@capgo/capacitor-updater";
|
|
6
|
+
import axios from "axios";
|
|
7
|
+
import { useState } from "react";
|
|
8
|
+
const useCodepush = ({ serverUrl, branch }) => {
|
|
9
|
+
const [update, setUpdate] = useState(false);
|
|
10
|
+
const [version, setVersion] = useState("");
|
|
11
|
+
const initialize = async () => {
|
|
12
|
+
await CapacitorUpdater.notifyAppReady();
|
|
13
|
+
};
|
|
14
|
+
const checkNewRelease = async () => {
|
|
15
|
+
const info = await Device.getInfo();
|
|
16
|
+
const app = await App.getInfo();
|
|
17
|
+
const pluginVersion = await CapacitorUpdater.getPluginVersion();
|
|
18
|
+
const { deviceId } = await CapacitorUpdater.getDeviceId();
|
|
19
|
+
const { bundle: version2, native } = await CapacitorUpdater.current();
|
|
20
|
+
const builtInversion = await CapacitorUpdater.getBuiltinVersion();
|
|
21
|
+
const appId = app.id;
|
|
22
|
+
const platform = info.platform;
|
|
23
|
+
window.alert(
|
|
24
|
+
`getBuildinVersion:${builtInversion.version}
|
|
25
|
+
current.bundle:${version2.version}
|
|
26
|
+
currennt.native:${native}`
|
|
27
|
+
);
|
|
28
|
+
const { major, minor, patch } = splitVersion(version2.version === "builtin" ? app.version : version2.version);
|
|
29
|
+
const appName = process.env.NEXT_PUBLIC_APP_NAME ?? "";
|
|
30
|
+
const appInfo = {
|
|
31
|
+
appId,
|
|
32
|
+
appName,
|
|
33
|
+
deviceId,
|
|
34
|
+
platform,
|
|
35
|
+
branch,
|
|
36
|
+
isEmulator: info.isVirtual,
|
|
37
|
+
major: parseInt(major),
|
|
38
|
+
minor: parseInt(minor),
|
|
39
|
+
patch: parseInt(patch),
|
|
40
|
+
buildNum: app.build,
|
|
41
|
+
//앱내 빌드시 버전 횟수 모르면 고한테 물어보기
|
|
42
|
+
versionOs: info.osVersion
|
|
43
|
+
};
|
|
44
|
+
const url = serverUrl.replace("lu", "akasys");
|
|
45
|
+
const release = (await axios.post(`${url}/release/codepush`, {
|
|
46
|
+
data: { ...appInfo }
|
|
47
|
+
})).data;
|
|
48
|
+
if (!release)
|
|
49
|
+
return;
|
|
50
|
+
const file = (await axios.get(`${url}/file/file/${release.appBuild}`)).data;
|
|
51
|
+
return { release, bundleFile: file };
|
|
52
|
+
};
|
|
53
|
+
const codepush = async () => {
|
|
54
|
+
const isNewRelease = await checkNewRelease();
|
|
55
|
+
if (!isNewRelease)
|
|
56
|
+
return;
|
|
57
|
+
const { release, bundleFile } = isNewRelease;
|
|
58
|
+
setUpdate(true);
|
|
59
|
+
const bundle = await CapacitorUpdater.download({
|
|
60
|
+
url: bundleFile.url,
|
|
61
|
+
version: mergeVersion(release.major, release.minor, release.patch)
|
|
62
|
+
});
|
|
63
|
+
await CapacitorUpdater.set(bundle);
|
|
64
|
+
};
|
|
65
|
+
const getVersion = async () => {
|
|
66
|
+
return await CapacitorUpdater.getBuiltinVersion();
|
|
67
|
+
};
|
|
68
|
+
const statManager = async () => {
|
|
69
|
+
};
|
|
70
|
+
return { update, version, initialize, checkNewRelease, codepush, statManager };
|
|
71
|
+
};
|
|
72
|
+
export {
|
|
73
|
+
useCodepush
|
|
74
|
+
};
|