@taskon/widget-react 0.0.1-beta.5 → 0.0.1-beta.6
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/README.md +13 -4
- package/dist/CommunityTaskList.css +9 -1
- package/dist/EligibilityInfo.css +46 -42
- package/dist/LeaderboardWidget.css +73 -71
- package/dist/PageBuilder.css +5 -0
- package/dist/Quest.css +18 -14
- package/dist/TaskOnProvider.css +2 -0
- package/dist/UserCenterWidget.css +6 -6
- package/dist/UserCenterWidget2.css +1626 -1601
- package/dist/{dynamic-import-helper.css → WidgetShell.css} +2 -2
- package/dist/chunks/{CommunityTaskList-CrMvOB8w.js → CommunityTaskList-Hde2OKHH.js} +360 -154
- package/dist/chunks/{EligibilityInfo-Beww12QX.js → EligibilityInfo-BV0Z2TgY.js} +533 -561
- package/dist/chunks/{LeaderboardWidget-DwuSpVl0.js → LeaderboardWidget-BNGRD5Bu.js} +270 -249
- package/dist/chunks/{PageBuilder-DsX6Tv0N.js → PageBuilder-C5DSHiW9.js} +5 -5
- package/dist/chunks/{Quest-CuD2LElS.js → Quest-DG9zfXJo.js} +72 -50
- package/dist/chunks/{TaskOnProvider-xUeP2Nro.js → TaskOnProvider-BhamHIyY.js} +34 -17
- package/dist/chunks/{ThemeProvider-Bt4UZ33y.js → ThemeProvider-mXLdLSkq.js} +81 -18
- package/dist/chunks/{UserCenterWidget-CvU6K4AC.js → UserCenterWidget-D5ttw4hO.js} +1328 -1337
- package/dist/chunks/{UserCenterWidget-CB0hnj-L.js → UserCenterWidget-jDO5zTN1.js} +298 -231
- package/dist/chunks/{dynamic-import-helper-WmIF58Sb.js → WidgetShell-D7yC894Y.js} +447 -457
- package/dist/chunks/communitytask-es-CBNnS4o2.js +521 -0
- package/dist/chunks/communitytask-ja-GRf9cbdx.js +521 -0
- package/dist/chunks/communitytask-ko-Bf24PQKI.js +521 -0
- package/dist/chunks/{communitytask-ru-DhySaZL8.js → communitytask-ru-CZm2CPoV.js} +211 -1
- package/dist/chunks/leaderboardwidget-es-vKjrjQaz.js +146 -0
- package/dist/chunks/leaderboardwidget-ja-Q6u0HxKG.js +146 -0
- package/dist/chunks/leaderboardwidget-ko-CG6SWgxf.js +146 -0
- package/dist/chunks/leaderboardwidget-ru-DCcHcJGz.js +146 -0
- package/dist/chunks/{quest-es-D-b5xcme.js → quest-es-Dyyy0zaw.js} +8 -93
- package/dist/chunks/{quest-ja-Dxd2vqBF.js → quest-ja-Depog33y.js} +8 -93
- package/dist/chunks/{quest-ko-CSmRWgK_.js → quest-ko-BMu3uRQJ.js} +8 -93
- package/dist/chunks/{quest-ru-CkEKv1_F.js → quest-ru-xne814Rw.js} +8 -93
- package/dist/chunks/usercenter-es-Dz3Wp2vV.js +512 -0
- package/dist/chunks/usercenter-ja-CKE4DJC6.js +512 -0
- package/dist/chunks/usercenter-ko-Dtpkn2qb.js +512 -0
- package/dist/chunks/usercenter-ru-DnBGee45.js +512 -0
- package/dist/community-task.d.ts +0 -390
- package/dist/community-task.js +2 -7
- package/dist/core.d.ts +29 -5
- package/dist/core.js +8 -9
- package/dist/index.d.ts +29 -701
- package/dist/index.js +18 -29
- package/dist/leaderboard.d.ts +0 -498
- package/dist/leaderboard.js +2 -16
- package/dist/page-builder.js +1 -1
- package/dist/quest.d.ts +0 -971
- package/dist/quest.js +2 -7
- package/dist/user-center.d.ts +0 -1610
- package/dist/user-center.js +2 -494
- package/package.json +2 -2
- package/dist/chunks/communitytask-es-1zawvXEX.js +0 -311
- package/dist/chunks/communitytask-ja-CmW6nP-L.js +0 -311
- package/dist/chunks/communitytask-ko-BD0hzQSi.js +0 -311
- package/dist/chunks/createLocaleLoader-BameiEhU.js +0 -65
- package/dist/chunks/leaderboardwidget-ja-Bj6gz6y1.js +0 -119
- package/dist/chunks/leaderboardwidget-ko-f1cLO9ic.js +0 -119
- package/dist/chunks/usercenter-ja-B2465c1O.js +0 -326
- package/dist/chunks/usercenter-ko-xAEYxqLg.js +0 -326
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useEffect, useMemo, useRef } from "react";
|
|
3
3
|
import { DEFAULT_PAGE_BUILDER_CONFIG, createPageBuilderApi, parsePageBuilderConfig, SectionLayoutType, WidgetTypeEnum, SECTION_LAYOUT_RATIOS } from "@taskon/core";
|
|
4
|
-
import { Q as QuestWidget } from "./Quest-
|
|
5
|
-
import {
|
|
6
|
-
import { L as LeaderboardWidget } from "./LeaderboardWidget-
|
|
7
|
-
import { U as UserCenterWidget } from "./UserCenterWidget-
|
|
8
|
-
import {
|
|
4
|
+
import { Q as QuestWidget } from "./Quest-DG9zfXJo.js";
|
|
5
|
+
import { C as CommunityTaskList } from "./CommunityTaskList-Hde2OKHH.js";
|
|
6
|
+
import { L as LeaderboardWidget } from "./LeaderboardWidget-BNGRD5Bu.js";
|
|
7
|
+
import { U as UserCenterWidget } from "./UserCenterWidget-jDO5zTN1.js";
|
|
8
|
+
import { h as useTaskOnContext } from "./ThemeProvider-mXLdLSkq.js";
|
|
9
9
|
import '../PageBuilder.css';function usePageBuilderConfig(pageId, localConfig) {
|
|
10
10
|
const { client } = useTaskOnContext();
|
|
11
11
|
const [config, setConfig] = useState(
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import React__default, { useState, useMemo, useCallback, useEffect, useRef } from "react";
|
|
3
3
|
import { RewardType, UserEligibleStatus, EligibilityTemplateId, SnsType, ChainType, QuestAutomaticallyWinnerDrawType, QuestWinnerDrawType, QuestWinnerRangeType, createQuestApi, QuestRewardsDistributeType, QuestRewardType, createLeaderboardApi, MediaType, RewardDistributedByType, ApiError, ErrorCode, CampaignType } from "@taskon/core";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { D as Dialog, B as Button, T as Table, P as Pagination,
|
|
4
|
+
import { x as useTaskOnPortalContainer, h as useTaskOnContext } from "./ThemeProvider-mXLdLSkq.js";
|
|
5
|
+
import { d as useTaskWidgetLocale, b as TaskItem, e as useQuestLocale, I as I18nT, f as EligibilityList, g as getDefaultExportFromCjs, s as sanitizeHtml, R as RewardModuleDialog, h as ConfirmNoticeDialog, u as useBindWallet, a as useNftClaimFlow, E as EligibilityInfo, B as BlindBoxDialog } from "./EligibilityInfo-BV0Z2TgY.js";
|
|
6
|
+
import { D as Dialog, B as Button, T as Table, P as Pagination, u as useResolvedWidgetConfig, W as WidgetShell } from "./WidgetShell-D7yC894Y.js";
|
|
7
7
|
import { d as useToast } from "./useToast-CaRkylKe.js";
|
|
8
|
-
import { R as Root2,
|
|
8
|
+
import { R as Root2, i as Trigger, j as Portal, C as Content2, r as InfoIcon, k as Arrow2, q as TipPopover, a as useBindSocialAccount } from "./UserCenterWidget-D5ttw4hO.js";
|
|
9
9
|
import '../Quest.css';function ButtonTabs({
|
|
10
10
|
items,
|
|
11
11
|
activeKey,
|
|
@@ -143,6 +143,7 @@ function GreenCheckIcon() {
|
|
|
143
143
|
function CompletedCount({
|
|
144
144
|
current,
|
|
145
145
|
total,
|
|
146
|
+
completedLabel = "Completed",
|
|
146
147
|
className
|
|
147
148
|
}) {
|
|
148
149
|
const isAllCompleted = current >= total && total > 0;
|
|
@@ -153,7 +154,8 @@ function CompletedCount({
|
|
|
153
154
|
/* @__PURE__ */ jsx("span", { className: current > 0 ? "taskon-completed-count-em" : "", children: current }),
|
|
154
155
|
"/",
|
|
155
156
|
total,
|
|
156
|
-
")
|
|
157
|
+
") ",
|
|
158
|
+
completedLabel
|
|
157
159
|
] })
|
|
158
160
|
] });
|
|
159
161
|
}
|
|
@@ -225,7 +227,8 @@ function TaskList({
|
|
|
225
227
|
CompletedCount,
|
|
226
228
|
{
|
|
227
229
|
current: completionStatus.mandatoryCompleted,
|
|
228
|
-
total: completionStatus.mandatoryTotal
|
|
230
|
+
total: completionStatus.mandatoryTotal,
|
|
231
|
+
completedLabel: t("completed")
|
|
229
232
|
}
|
|
230
233
|
)
|
|
231
234
|
] }),
|
|
@@ -281,7 +284,8 @@ function TaskList({
|
|
|
281
284
|
CompletedCount,
|
|
282
285
|
{
|
|
283
286
|
current: completionStatus.optionalCompleted,
|
|
284
|
-
total: completionStatus.optionalTotal
|
|
287
|
+
total: completionStatus.optionalTotal,
|
|
288
|
+
completedLabel: t("completed")
|
|
285
289
|
}
|
|
286
290
|
)
|
|
287
291
|
] }),
|
|
@@ -804,7 +808,14 @@ function useQuestDetail(options) {
|
|
|
804
808
|
}
|
|
805
809
|
function useQuestUserStatus(options) {
|
|
806
810
|
const { t } = useQuestLocale();
|
|
807
|
-
const {
|
|
811
|
+
const {
|
|
812
|
+
api,
|
|
813
|
+
campaignId,
|
|
814
|
+
channel,
|
|
815
|
+
kolHandle,
|
|
816
|
+
enabled = true,
|
|
817
|
+
authToken
|
|
818
|
+
} = options;
|
|
808
819
|
const [data, setData] = useState(null);
|
|
809
820
|
const [isLoading, setIsLoading] = useState(false);
|
|
810
821
|
const [error, setError] = useState(null);
|
|
@@ -830,7 +841,7 @@ function useQuestUserStatus(options) {
|
|
|
830
841
|
} finally {
|
|
831
842
|
setIsLoading(false);
|
|
832
843
|
}
|
|
833
|
-
}, [enabled, api, campaignId, channel, kolHandle, t]);
|
|
844
|
+
}, [enabled, api, campaignId, channel, kolHandle, authToken, t]);
|
|
834
845
|
const updateTaskStatus = useCallback(
|
|
835
846
|
(taskId, isAsync = false) => {
|
|
836
847
|
setData((prev) => {
|
|
@@ -7507,7 +7518,7 @@ function CompleteButton({
|
|
|
7507
7518
|
if (!client) return null;
|
|
7508
7519
|
return createQuestApi(client);
|
|
7509
7520
|
}, [client]);
|
|
7510
|
-
const buttonText = hasPointProportionally2 ? t("complete_qualify_rewards") : t("
|
|
7521
|
+
const buttonText = hasPointProportionally2 ? t("complete_qualify_rewards") : t("complete");
|
|
7511
7522
|
const handleComplete = useCallback(async () => {
|
|
7512
7523
|
if (!api || isLoading || disabled) {
|
|
7513
7524
|
return;
|
|
@@ -7650,7 +7661,7 @@ function OperateFooter(props) {
|
|
|
7650
7661
|
{
|
|
7651
7662
|
className: "taskon-quest-footer-connect-btn",
|
|
7652
7663
|
onClick: onConnectWallet,
|
|
7653
|
-
children: t("
|
|
7664
|
+
children: t("start_to_earn")
|
|
7654
7665
|
}
|
|
7655
7666
|
) });
|
|
7656
7667
|
const handleCompleteError = useCallback(
|
|
@@ -8194,7 +8205,7 @@ function ArrowUpRightIcon() {
|
|
|
8194
8205
|
}
|
|
8195
8206
|
function formatDateShort(timestamp) {
|
|
8196
8207
|
const date = new Date(timestamp);
|
|
8197
|
-
return new Intl.DateTimeFormat(
|
|
8208
|
+
return new Intl.DateTimeFormat("en-US", {
|
|
8198
8209
|
month: "short",
|
|
8199
8210
|
day: "2-digit"
|
|
8200
8211
|
}).format(date);
|
|
@@ -8241,9 +8252,9 @@ function WinnersStatus({
|
|
|
8241
8252
|
if (discordLink) return discordLink;
|
|
8242
8253
|
return void 0;
|
|
8243
8254
|
}, [discordLink]);
|
|
8244
|
-
const handleWinnersVisibleChange = (visible) => {
|
|
8255
|
+
const handleWinnersVisibleChange = useCallback((visible) => {
|
|
8245
8256
|
setHasWinners(visible);
|
|
8246
|
-
};
|
|
8257
|
+
}, []);
|
|
8247
8258
|
return /* @__PURE__ */ jsxs("div", { className: `taskon-winners ${className}`, children: [
|
|
8248
8259
|
isWaitingReviewPow && (powReviewLink ? /* @__PURE__ */ jsxs(
|
|
8249
8260
|
"a",
|
|
@@ -8501,7 +8512,15 @@ function QuestWidgetInner(props) {
|
|
|
8501
8512
|
rewardDisplayMode,
|
|
8502
8513
|
rewardRedirectUrl
|
|
8503
8514
|
} = props;
|
|
8504
|
-
const {
|
|
8515
|
+
const {
|
|
8516
|
+
client,
|
|
8517
|
+
chains,
|
|
8518
|
+
isLoggedIn,
|
|
8519
|
+
userInfo,
|
|
8520
|
+
userToken,
|
|
8521
|
+
requestLogin,
|
|
8522
|
+
communityInfo
|
|
8523
|
+
} = useTaskOnContext();
|
|
8505
8524
|
const { toast } = useToast();
|
|
8506
8525
|
const questNftClaimMessages = useMemo(
|
|
8507
8526
|
() => createQuestNftClaimMessages(t),
|
|
@@ -8553,7 +8572,8 @@ function QuestWidgetInner(props) {
|
|
|
8553
8572
|
campaignId,
|
|
8554
8573
|
channel,
|
|
8555
8574
|
kolHandle,
|
|
8556
|
-
enabled: !isPreview
|
|
8575
|
+
enabled: !isPreview,
|
|
8576
|
+
authToken: userToken
|
|
8557
8577
|
});
|
|
8558
8578
|
const {
|
|
8559
8579
|
data: questStatus,
|
|
@@ -8655,6 +8675,17 @@ function QuestWidgetInner(props) {
|
|
|
8655
8675
|
const [blindBoxEmptyReward, setBlindBoxEmptyReward] = useState();
|
|
8656
8676
|
const [blindBoxTokenPrice, setBlindBoxTokenPrice] = useState();
|
|
8657
8677
|
const [isClaimingBlindBox, setIsClaimingBlindBox] = useState(false);
|
|
8678
|
+
const [hasCompletedBlindBoxClaim, setHasCompletedBlindBoxClaim] = useState(false);
|
|
8679
|
+
const closeBlindBoxModal = useCallback(() => {
|
|
8680
|
+
setBlindBoxDialogVisible(false);
|
|
8681
|
+
setBlindBoxRewardVisible(false);
|
|
8682
|
+
}, []);
|
|
8683
|
+
const handleBlindBoxDialogOpenChange = useCallback((open) => {
|
|
8684
|
+
setBlindBoxDialogVisible(open);
|
|
8685
|
+
if (!open) {
|
|
8686
|
+
setBlindBoxRewardVisible(false);
|
|
8687
|
+
}
|
|
8688
|
+
}, []);
|
|
8658
8689
|
const buildBlindBoxRewardValue = useCallback(
|
|
8659
8690
|
(amount) => {
|
|
8660
8691
|
if (!blindBoxTokenReward) {
|
|
@@ -8689,8 +8720,8 @@ function QuestWidgetInner(props) {
|
|
|
8689
8720
|
[blindBoxTokenReward]
|
|
8690
8721
|
);
|
|
8691
8722
|
const handleOpenBlindBox = useCallback(() => {
|
|
8692
|
-
setBlindBoxRewardVisible(false);
|
|
8693
8723
|
setBlindBoxDialogVisible(true);
|
|
8724
|
+
setBlindBoxRewardVisible(false);
|
|
8694
8725
|
}, []);
|
|
8695
8726
|
const handleBlindBoxOpened = useCallback(async () => {
|
|
8696
8727
|
var _a2;
|
|
@@ -8713,7 +8744,7 @@ function QuestWidgetInner(props) {
|
|
|
8713
8744
|
}
|
|
8714
8745
|
refetchUserStatus();
|
|
8715
8746
|
refetchStatus();
|
|
8716
|
-
|
|
8747
|
+
setHasCompletedBlindBoxClaim(true);
|
|
8717
8748
|
setBlindBoxRewardVisible(true);
|
|
8718
8749
|
} catch (error2) {
|
|
8719
8750
|
console.error("Claim blind box error:", error2);
|
|
@@ -8734,15 +8765,19 @@ function QuestWidgetInner(props) {
|
|
|
8734
8765
|
toast
|
|
8735
8766
|
]);
|
|
8736
8767
|
useEffect(() => {
|
|
8737
|
-
if (userBlindBoxStatus === "wait-claim" && !isBlindBoxDialogVisible && !isBlindBoxRewardVisible) {
|
|
8768
|
+
if (userBlindBoxStatus === "wait-claim" && !isBlindBoxDialogVisible && !isBlindBoxRewardVisible && !hasCompletedBlindBoxClaim) {
|
|
8738
8769
|
handleOpenBlindBox();
|
|
8739
8770
|
}
|
|
8740
8771
|
}, [
|
|
8741
8772
|
userBlindBoxStatus,
|
|
8742
8773
|
isBlindBoxDialogVisible,
|
|
8743
8774
|
isBlindBoxRewardVisible,
|
|
8775
|
+
hasCompletedBlindBoxClaim,
|
|
8744
8776
|
handleOpenBlindBox
|
|
8745
8777
|
]);
|
|
8778
|
+
useEffect(() => {
|
|
8779
|
+
setHasCompletedBlindBoxClaim(false);
|
|
8780
|
+
}, [campaignId]);
|
|
8746
8781
|
const isLoading = isDetailLoading || isUserStatusLoading || isStatusLoading;
|
|
8747
8782
|
const error = detailError || userStatusError || statusError;
|
|
8748
8783
|
useEffect(() => {
|
|
@@ -8965,7 +9000,8 @@ function QuestWidgetInner(props) {
|
|
|
8965
9000
|
{
|
|
8966
9001
|
className: "taskon-quest-tasks-progress",
|
|
8967
9002
|
current: mandatoryCompleted + optionalCompleted,
|
|
8968
|
-
total: mandatoryTotal + optionalTotal
|
|
9003
|
+
total: mandatoryTotal + optionalTotal,
|
|
9004
|
+
completedLabel: t("completed")
|
|
8969
9005
|
}
|
|
8970
9006
|
),
|
|
8971
9007
|
/* @__PURE__ */ jsx(
|
|
@@ -9086,38 +9122,27 @@ function QuestWidgetInner(props) {
|
|
|
9086
9122
|
Dialog,
|
|
9087
9123
|
{
|
|
9088
9124
|
open: isBlindBoxDialogVisible,
|
|
9089
|
-
onOpenChange:
|
|
9090
|
-
title: t("open_blind_box"),
|
|
9091
|
-
showCloseButton:
|
|
9092
|
-
closeOnOverlayClick:
|
|
9093
|
-
closeOnEscapeKey:
|
|
9094
|
-
contentClassName: "taskon-quest-blindbox-dialog-wrapper"
|
|
9095
|
-
children: /* @__PURE__ */ jsx(
|
|
9096
|
-
BlindBoxDialog,
|
|
9097
|
-
{
|
|
9098
|
-
ref: blindBoxDialogRef,
|
|
9099
|
-
onClose: () => setBlindBoxDialogVisible(false),
|
|
9100
|
-
onOpened: handleBlindBoxOpened
|
|
9101
|
-
}
|
|
9102
|
-
)
|
|
9103
|
-
}
|
|
9104
|
-
),
|
|
9105
|
-
/* @__PURE__ */ jsx(
|
|
9106
|
-
Dialog,
|
|
9107
|
-
{
|
|
9108
|
-
open: isBlindBoxRewardVisible,
|
|
9109
|
-
onOpenChange: setBlindBoxRewardVisible,
|
|
9110
|
-
title: t("blind_box_reward"),
|
|
9111
|
-
showCloseButton: true,
|
|
9112
|
-
contentClassName: "taskon-quest-blindbox-reward-wrapper",
|
|
9113
|
-
children: /* @__PURE__ */ jsx(
|
|
9125
|
+
onOpenChange: handleBlindBoxDialogOpenChange,
|
|
9126
|
+
title: isBlindBoxRewardVisible ? t("blind_box_reward") : t("open_blind_box"),
|
|
9127
|
+
showCloseButton: isBlindBoxRewardVisible,
|
|
9128
|
+
closeOnOverlayClick: isBlindBoxRewardVisible,
|
|
9129
|
+
closeOnEscapeKey: isBlindBoxRewardVisible,
|
|
9130
|
+
contentClassName: `taskon-quest-blindbox-dialog-wrapper${isBlindBoxRewardVisible ? " taskon-quest-blindbox-dialog-wrapper--result" : ""}`,
|
|
9131
|
+
children: isBlindBoxRewardVisible ? /* @__PURE__ */ jsx(
|
|
9114
9132
|
BlindBoxRewardDialog,
|
|
9115
9133
|
{
|
|
9116
9134
|
rewards: blindBoxWinnerRewards,
|
|
9117
9135
|
emptyReward: blindBoxEmptyReward,
|
|
9118
9136
|
tokenPrice: blindBoxTokenPrice,
|
|
9119
9137
|
loading: isClaimingBlindBox,
|
|
9120
|
-
onClose:
|
|
9138
|
+
onClose: closeBlindBoxModal
|
|
9139
|
+
}
|
|
9140
|
+
) : /* @__PURE__ */ jsx(
|
|
9141
|
+
BlindBoxDialog,
|
|
9142
|
+
{
|
|
9143
|
+
ref: blindBoxDialogRef,
|
|
9144
|
+
onClose: closeBlindBoxModal,
|
|
9145
|
+
onOpened: handleBlindBoxOpened
|
|
9121
9146
|
}
|
|
9122
9147
|
)
|
|
9123
9148
|
}
|
|
@@ -9211,8 +9236,5 @@ function QuestWidgetInner(props) {
|
|
|
9211
9236
|
] });
|
|
9212
9237
|
}
|
|
9213
9238
|
export {
|
|
9214
|
-
QuestWidget as Q
|
|
9215
|
-
useQuestUserStatus as a,
|
|
9216
|
-
useQuestStatus as b,
|
|
9217
|
-
useQuestDetail as u
|
|
9239
|
+
QuestWidget as Q
|
|
9218
9240
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { p as preloadWidgetLocale, b as useWidgetLocale, e as createContextScope,
|
|
2
|
-
import { c as createLocaleLoader } from "./createLocaleLoader-BameiEhU.js";
|
|
1
|
+
import { p as preloadWidgetLocale, b as useWidgetLocale, e as createLocaleLoader, j as createContextScope, k as useComposedRefs, l as createSlot, P as Primitive, B as Branch, m as useControllableState, n as Presence, o as composeEventHandlers, q as useCallbackRef, R as Root, r as Portal, s as useLayoutEffect2, t as dispatchDiscreteCustomEvent, v as TaskOnContext } from "./ThemeProvider-mXLdLSkq.js";
|
|
3
2
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
4
3
|
import * as React from "react";
|
|
5
4
|
import React__default, { useState, useRef, useEffect, useMemo, useCallback } from "react";
|
|
@@ -47,6 +46,7 @@ function useClientInit({
|
|
|
47
46
|
const [client, setClient] = useState(null);
|
|
48
47
|
const userApiRef = useRef(null);
|
|
49
48
|
const [isInitializing, setIsInitializing] = useState(true);
|
|
49
|
+
const [isSessionReady, setIsSessionReady] = useState(false);
|
|
50
50
|
const isInitializedRef = useRef(false);
|
|
51
51
|
const configRef = useRef({ apiKey, baseURL });
|
|
52
52
|
configRef.current = { apiKey, baseURL };
|
|
@@ -77,14 +77,17 @@ function useClientInit({
|
|
|
77
77
|
userApiRef.current = userApi;
|
|
78
78
|
const storedToken = getStoredToken();
|
|
79
79
|
if (storedToken) {
|
|
80
|
+
taskOnClient.setUserToken(storedToken);
|
|
81
|
+
setIsSessionReady(true);
|
|
80
82
|
try {
|
|
81
|
-
taskOnClient.setUserToken(storedToken);
|
|
82
83
|
const info = await userApi.getInfo();
|
|
83
84
|
setUserInfo2(info);
|
|
84
85
|
setUserToken2(storedToken);
|
|
85
86
|
} catch {
|
|
86
87
|
taskOnClient.setUserToken(null);
|
|
87
88
|
}
|
|
89
|
+
} else {
|
|
90
|
+
setIsSessionReady(true);
|
|
88
91
|
}
|
|
89
92
|
} finally {
|
|
90
93
|
setIsInitializing(false);
|
|
@@ -95,36 +98,37 @@ function useClientInit({
|
|
|
95
98
|
return {
|
|
96
99
|
client,
|
|
97
100
|
userApiRef,
|
|
101
|
+
isSessionReady,
|
|
98
102
|
isInitializing
|
|
99
103
|
};
|
|
100
104
|
}
|
|
101
105
|
const registry = /* @__PURE__ */ new Map();
|
|
102
106
|
const builtInLocaleImports = {
|
|
103
107
|
CommunityTask: {
|
|
104
|
-
ko: () => import("./communitytask-ko-
|
|
108
|
+
ko: () => import("./communitytask-ko-Bf24PQKI.js").then((module) => ({
|
|
105
109
|
default: module.default
|
|
106
110
|
})),
|
|
107
|
-
ja: () => import("./communitytask-ja-
|
|
111
|
+
ja: () => import("./communitytask-ja-GRf9cbdx.js").then((module) => ({
|
|
108
112
|
default: module.default
|
|
109
113
|
})),
|
|
110
|
-
ru: () => import("./communitytask-ru-
|
|
114
|
+
ru: () => import("./communitytask-ru-CZm2CPoV.js").then((module) => ({
|
|
111
115
|
default: module.default
|
|
112
116
|
})),
|
|
113
|
-
es: () => import("./communitytask-es-
|
|
117
|
+
es: () => import("./communitytask-es-CBNnS4o2.js").then((module) => ({
|
|
114
118
|
default: module.default
|
|
115
119
|
}))
|
|
116
120
|
},
|
|
117
121
|
Quest: {
|
|
118
|
-
ko: () => import("./quest-ko-
|
|
122
|
+
ko: () => import("./quest-ko-BMu3uRQJ.js").then((module) => ({
|
|
119
123
|
default: module.default
|
|
120
124
|
})),
|
|
121
|
-
ja: () => import("./quest-ja-
|
|
125
|
+
ja: () => import("./quest-ja-Depog33y.js").then((module) => ({
|
|
122
126
|
default: module.default
|
|
123
127
|
})),
|
|
124
|
-
ru: () => import("./quest-ru-
|
|
128
|
+
ru: () => import("./quest-ru-xne814Rw.js").then((module) => ({
|
|
125
129
|
default: module.default
|
|
126
130
|
})),
|
|
127
|
-
es: () => import("./quest-es-
|
|
131
|
+
es: () => import("./quest-es-Dyyy0zaw.js").then((module) => ({
|
|
128
132
|
default: module.default
|
|
129
133
|
}))
|
|
130
134
|
},
|
|
@@ -143,18 +147,30 @@ const builtInLocaleImports = {
|
|
|
143
147
|
}))
|
|
144
148
|
},
|
|
145
149
|
LeaderboardWidget: {
|
|
146
|
-
ko: () => import("./leaderboardwidget-ko-
|
|
150
|
+
ko: () => import("./leaderboardwidget-ko-CG6SWgxf.js").then((module) => ({
|
|
151
|
+
default: module.default
|
|
152
|
+
})),
|
|
153
|
+
ja: () => import("./leaderboardwidget-ja-Q6u0HxKG.js").then((module) => ({
|
|
154
|
+
default: module.default
|
|
155
|
+
})),
|
|
156
|
+
ru: () => import("./leaderboardwidget-ru-DCcHcJGz.js").then((module) => ({
|
|
147
157
|
default: module.default
|
|
148
158
|
})),
|
|
149
|
-
|
|
159
|
+
es: () => import("./leaderboardwidget-es-vKjrjQaz.js").then((module) => ({
|
|
150
160
|
default: module.default
|
|
151
161
|
}))
|
|
152
162
|
},
|
|
153
163
|
UserCenterWidget: {
|
|
154
|
-
ko: () => import("./usercenter-ko-
|
|
164
|
+
ko: () => import("./usercenter-ko-Dtpkn2qb.js").then((module) => ({
|
|
165
|
+
default: module.default
|
|
166
|
+
})),
|
|
167
|
+
ja: () => import("./usercenter-ja-CKE4DJC6.js").then((module) => ({
|
|
168
|
+
default: module.default
|
|
169
|
+
})),
|
|
170
|
+
ru: () => import("./usercenter-ru-DnBGee45.js").then((module) => ({
|
|
155
171
|
default: module.default
|
|
156
172
|
})),
|
|
157
|
-
|
|
173
|
+
es: () => import("./usercenter-es-Dz3Wp2vV.js").then((module) => ({
|
|
158
174
|
default: module.default
|
|
159
175
|
}))
|
|
160
176
|
}
|
|
@@ -1158,7 +1174,7 @@ function TaskOnProvider({
|
|
|
1158
1174
|
configLocale: config.locale,
|
|
1159
1175
|
preloadLocales
|
|
1160
1176
|
});
|
|
1161
|
-
const { client, userApiRef, isInitializing } = useClientInit({
|
|
1177
|
+
const { client, userApiRef, isInitializing, isSessionReady } = useClientInit({
|
|
1162
1178
|
apiKey: config.apiKey,
|
|
1163
1179
|
baseURL: config.baseURL,
|
|
1164
1180
|
setUserInfo,
|
|
@@ -1212,6 +1228,7 @@ function TaskOnProvider({
|
|
|
1212
1228
|
config,
|
|
1213
1229
|
client,
|
|
1214
1230
|
isInitializing,
|
|
1231
|
+
isSessionReady,
|
|
1215
1232
|
locale,
|
|
1216
1233
|
userId: (userInfo == null ? void 0 : userInfo.id) ?? null,
|
|
1217
1234
|
userInfo,
|
|
@@ -1224,7 +1241,7 @@ function TaskOnProvider({
|
|
|
1224
1241
|
chains,
|
|
1225
1242
|
communityInfo
|
|
1226
1243
|
}),
|
|
1227
|
-
[config, client, isInitializing, locale, userInfo, userToken, login, logout, requestLogin, refreshUserInfo, chains, communityInfo]
|
|
1244
|
+
[config, client, isInitializing, isSessionReady, locale, userInfo, userToken, login, logout, requestLogin, refreshUserInfo, chains, communityInfo]
|
|
1228
1245
|
);
|
|
1229
1246
|
return /* @__PURE__ */ jsx(TaskOnContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(ToastContext.Provider, { value: toastState, children: /* @__PURE__ */ jsxs(ToastProvider, { children: [
|
|
1230
1247
|
/* @__PURE__ */ jsx(WalletProvider, { config: config.walletConfig, children }),
|
|
@@ -38,6 +38,7 @@ function useTaskOnAuth() {
|
|
|
38
38
|
userId: context.userId,
|
|
39
39
|
isLoggedIn: context.isLoggedIn,
|
|
40
40
|
isInitializing: context.isInitializing,
|
|
41
|
+
isSessionReady: context.isSessionReady,
|
|
41
42
|
// Unified login
|
|
42
43
|
login: context.login,
|
|
43
44
|
// Logout
|
|
@@ -49,6 +50,7 @@ function useTaskOnAuth() {
|
|
|
49
50
|
context.userId,
|
|
50
51
|
context.isLoggedIn,
|
|
51
52
|
context.isInitializing,
|
|
53
|
+
context.isSessionReady,
|
|
52
54
|
context.login,
|
|
53
55
|
context.logout,
|
|
54
56
|
context.requestLogin
|
|
@@ -136,6 +138,63 @@ async function preloadWidgetLocale(widgetId, locale, loadMessages) {
|
|
|
136
138
|
);
|
|
137
139
|
}
|
|
138
140
|
}
|
|
141
|
+
function interpolate(template, params) {
|
|
142
|
+
if (!params) {
|
|
143
|
+
return template;
|
|
144
|
+
}
|
|
145
|
+
return template.replace(/\{(\w+)\}/g, (match, key) => {
|
|
146
|
+
const value = params[key];
|
|
147
|
+
if (value === void 0) {
|
|
148
|
+
return match;
|
|
149
|
+
}
|
|
150
|
+
return String(value);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
function createT(messages) {
|
|
154
|
+
return (key, params) => {
|
|
155
|
+
const template = messages[key];
|
|
156
|
+
if (typeof template !== "string") {
|
|
157
|
+
if (process.env.NODE_ENV !== "production") {
|
|
158
|
+
console.warn(`[widget-react] Missing translation key: ${String(key)}`);
|
|
159
|
+
}
|
|
160
|
+
return String(key);
|
|
161
|
+
}
|
|
162
|
+
return interpolate(template, params);
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
function createTFunction(messages) {
|
|
166
|
+
return (key, params) => {
|
|
167
|
+
const template = messages[key];
|
|
168
|
+
if (typeof template !== "string") {
|
|
169
|
+
if (process.env.NODE_ENV !== "production") {
|
|
170
|
+
console.warn(`[widget-react] Missing translation key: ${String(key)}`);
|
|
171
|
+
}
|
|
172
|
+
return String(key);
|
|
173
|
+
}
|
|
174
|
+
return interpolate(template, params);
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
function useTranslation(options) {
|
|
178
|
+
const { messages, isLoading } = useWidgetLocale(options);
|
|
179
|
+
const t = useMemo(() => createTFunction(messages), [messages]);
|
|
180
|
+
return {
|
|
181
|
+
t,
|
|
182
|
+
messages,
|
|
183
|
+
isLoading
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
function createLocaleLoader(defaultMessages, imports) {
|
|
187
|
+
return (locale) => {
|
|
188
|
+
if (locale === "en") {
|
|
189
|
+
return Promise.resolve({ default: defaultMessages });
|
|
190
|
+
}
|
|
191
|
+
const importFn = imports[locale];
|
|
192
|
+
if (importFn) {
|
|
193
|
+
return importFn();
|
|
194
|
+
}
|
|
195
|
+
return Promise.resolve({ default: defaultMessages });
|
|
196
|
+
};
|
|
197
|
+
}
|
|
139
198
|
function composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {
|
|
140
199
|
return function handleEvent(event) {
|
|
141
200
|
originalEventHandler == null ? void 0 : originalEventHandler(event);
|
|
@@ -1312,23 +1371,27 @@ export {
|
|
|
1312
1371
|
ThemeProvider as T,
|
|
1313
1372
|
useTaskOnTheme as a,
|
|
1314
1373
|
useWidgetLocale as b,
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1374
|
+
useTranslation as c,
|
|
1375
|
+
clearLocaleCache as d,
|
|
1376
|
+
createLocaleLoader as e,
|
|
1377
|
+
createT as f,
|
|
1378
|
+
isSupportedLocale as g,
|
|
1379
|
+
useTaskOnContext as h,
|
|
1380
|
+
interpolate as i,
|
|
1381
|
+
createContextScope as j,
|
|
1382
|
+
useComposedRefs as k,
|
|
1383
|
+
createSlot as l,
|
|
1384
|
+
useControllableState as m,
|
|
1385
|
+
Presence as n,
|
|
1386
|
+
composeEventHandlers as o,
|
|
1328
1387
|
preloadWidgetLocale as p,
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
useTaskOnAuth as u
|
|
1388
|
+
useCallbackRef as q,
|
|
1389
|
+
Portal as r,
|
|
1390
|
+
useLayoutEffect2 as s,
|
|
1391
|
+
dispatchDiscreteCustomEvent as t,
|
|
1392
|
+
useTaskOnAuth as u,
|
|
1393
|
+
TaskOnContext as v,
|
|
1394
|
+
createContext2 as w,
|
|
1395
|
+
useTaskOnPortalContainer as x,
|
|
1396
|
+
composeRefs as y
|
|
1334
1397
|
};
|