@playbasis-ai/qwikcard-sdk 2.3.12 → 2.3.14
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/CHANGELOG.md +12 -0
- package/dist/QwikCardApp.d.ts.map +1 -1
- package/dist/QwikCardApp.js +2 -1
- package/dist/api/client.js +5 -5
- package/dist/data/qwik-badge-assets.d.ts +2 -0
- package/dist/data/qwik-badge-assets.d.ts.map +1 -0
- package/dist/data/qwik-badge-assets.js +37 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/web/widgetAssets.d.ts.map +1 -1
- package/dist/web/widgetAssets.js +3 -3
- package/package.json +1 -1
- package/src/QwikCardApp.tsx +2 -1
- package/src/api/client.ts +10 -10
- package/src/data/qwik-badge-assets.ts +40 -0
- package/src/types/index.ts +1 -0
- package/src/web/widgetAssets.ts +5 -3
package/package.json
CHANGED
package/src/QwikCardApp.tsx
CHANGED
|
@@ -4,6 +4,7 @@ import { WebView, type WebViewMessageEvent } from 'react-native-webview';
|
|
|
4
4
|
|
|
5
5
|
import { PlaybasisProvider, usePlaybasis } from './PlaybasisProvider';
|
|
6
6
|
import { useTheme } from './theme/context';
|
|
7
|
+
import { getQwikBadgeAssetUrl } from './data/qwik-badge-assets';
|
|
7
8
|
import { getWidgetHtml } from './web/widgetHtml';
|
|
8
9
|
import type { WidgetBootstrapData, WidgetBridgeMessage } from './web/widgetTypes';
|
|
9
10
|
|
|
@@ -112,7 +113,7 @@ function AppContent({ leaderboardId }: { leaderboardId?: string }) {
|
|
|
112
113
|
name: b.name,
|
|
113
114
|
rarity: 'common',
|
|
114
115
|
unlocked: playerBadges.some((pb) => pb.id === b.id && pb.isEarned),
|
|
115
|
-
imageUrl: b.imageUrl,
|
|
116
|
+
imageUrl: b.imageUrl || (b.slug ? getQwikBadgeAssetUrl(b.slug) : undefined),
|
|
116
117
|
})),
|
|
117
118
|
rewards: rewards.map((r) => ({
|
|
118
119
|
id: r.id,
|
package/src/api/client.ts
CHANGED
|
@@ -211,16 +211,16 @@ export class PlaybasisClient {
|
|
|
211
211
|
// ─────────────────────────────────────────────────────────────────────────
|
|
212
212
|
|
|
213
213
|
async getQuests(): Promise<Quest[]> {
|
|
214
|
-
const data = await this.request<{ quests?: Quest[] }>('GET', '/quests');
|
|
215
|
-
return data.quests || [];
|
|
214
|
+
const data = await this.request<{ quests?: Quest[]; items?: Quest[] }>('GET', '/quests');
|
|
215
|
+
return data.quests || data.items || [];
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
async getPlayerQuests(playerId: string): Promise<Quest[]> {
|
|
219
|
-
const data = await this.request<{ quests?: Quest[] }>(
|
|
219
|
+
const data = await this.request<{ quests?: Quest[]; items?: Quest[] }>(
|
|
220
220
|
'GET',
|
|
221
221
|
`/players/${encodeURIComponent(playerId)}/quests`,
|
|
222
222
|
);
|
|
223
|
-
return data.quests || [];
|
|
223
|
+
return data.quests || data.items || [];
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
async getQuestProgress(playerId: string, questId: string): Promise<Quest> {
|
|
@@ -236,16 +236,16 @@ export class PlaybasisClient {
|
|
|
236
236
|
// ─────────────────────────────────────────────────────────────────────────
|
|
237
237
|
|
|
238
238
|
async getBadges(): Promise<Badge[]> {
|
|
239
|
-
const data = await this.request<{ badges?: Badge[] }>('GET', '/badges');
|
|
240
|
-
return data.badges || [];
|
|
239
|
+
const data = await this.request<{ badges?: Badge[]; items?: Badge[] }>('GET', '/badges');
|
|
240
|
+
return data.badges || data.items || [];
|
|
241
241
|
}
|
|
242
242
|
|
|
243
243
|
async getPlayerBadges(playerId: string): Promise<Badge[]> {
|
|
244
|
-
const data = await this.request<{ badges?: Badge[] }>(
|
|
244
|
+
const data = await this.request<{ badges?: Badge[]; items?: Badge[] }>(
|
|
245
245
|
'GET',
|
|
246
246
|
`/players/${encodeURIComponent(playerId)}/badges`,
|
|
247
247
|
);
|
|
248
|
-
return data.badges || [];
|
|
248
|
+
return data.badges || data.items || [];
|
|
249
249
|
}
|
|
250
250
|
|
|
251
251
|
// ─────────────────────────────────────────────────────────────────────────
|
|
@@ -253,8 +253,8 @@ export class PlaybasisClient {
|
|
|
253
253
|
// ─────────────────────────────────────────────────────────────────────────
|
|
254
254
|
|
|
255
255
|
async getRewards(): Promise<Reward[]> {
|
|
256
|
-
const data = await this.request<{ rewards?: Reward[] }>('GET', '/rewards');
|
|
257
|
-
return data.rewards || [];
|
|
256
|
+
const data = await this.request<{ rewards?: Reward[]; items?: Reward[] }>('GET', '/rewards');
|
|
257
|
+
return data.rewards || data.items || [];
|
|
258
258
|
}
|
|
259
259
|
|
|
260
260
|
async redeemReward(playerId: string, rewardId: string): Promise<RedemptionResult> {
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const DEFAULT_BADGE_ASSET_BASE_URL =
|
|
2
|
+
'https://sapbstg001.blob.core.windows.net/playbasis-assets/tenants/qwik/badges';
|
|
3
|
+
|
|
4
|
+
const QWIK_BADGE_FILE_MAP: Record<string, string> = {
|
|
5
|
+
'badge.qwik.starter': 'badge_starter',
|
|
6
|
+
'badge.qwik.profile_complete': 'badge_profile_pro',
|
|
7
|
+
'badge.qwik.budget_boss': 'badge_budget_boss',
|
|
8
|
+
'badge.qwik.credit_curious': 'badge_credit_curious',
|
|
9
|
+
'badge.qwik.social_spark': 'badge_social_spark',
|
|
10
|
+
'badge.qwik.streak_7': 'badge_streak_7',
|
|
11
|
+
'badge.qwik.streak_21': 'badge_streak_master',
|
|
12
|
+
'badge.qwik.learner_3': 'badge_learner',
|
|
13
|
+
'badge.qwik.ambassador': 'badge_campus_ambassador',
|
|
14
|
+
'badge.qwik.saver_500': 'badge_savings_spark',
|
|
15
|
+
'badge.qwik.saver_1000': 'badge_savings_champion',
|
|
16
|
+
'badge.qwik.txn_10': 'badge_card_explorer',
|
|
17
|
+
'badge.qwik.txn_50': 'badge_card_pro',
|
|
18
|
+
'badge.qwik.credit_safe': 'badge_credit_guardian',
|
|
19
|
+
'badge.qwik.campus_mvp': 'badge_campus_mvp',
|
|
20
|
+
'badge.qwik.login_30': 'badge_consistency_champ',
|
|
21
|
+
'badge.qwik.login_90': 'badge_quarter_streak',
|
|
22
|
+
'badge.qwik.learn_10': 'badge_knowledge_builder',
|
|
23
|
+
'badge.qwik.learn_25': 'badge_finance_scholar',
|
|
24
|
+
'badge.qwik.budget_3': 'badge_budget_builder',
|
|
25
|
+
'badge.qwik.budget_5': 'badge_budget_architect',
|
|
26
|
+
'badge.qwik.credit_check_4': 'badge_credit_watcher',
|
|
27
|
+
'badge.qwik.credit_check_8': 'badge_credit_sentinel',
|
|
28
|
+
'badge.qwik.qwikit_25': 'badge_social_connector',
|
|
29
|
+
'badge.qwik.qwikit_50': 'badge_campus_networker',
|
|
30
|
+
'badge.qwik.txn_100': 'badge_card_veteran',
|
|
31
|
+
'badge.qwik.txn_week_5': 'badge_weekly_explorer',
|
|
32
|
+
'badge.qwik.referral_5': 'badge_connector',
|
|
33
|
+
'badge.qwik.referral_10': 'badge_campus_influencer',
|
|
34
|
+
'badge.qwik.saver_2500': 'badge_savings_hero',
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export function getQwikBadgeAssetUrl(slug: string, baseUrl = DEFAULT_BADGE_ASSET_BASE_URL) {
|
|
38
|
+
const fileName = QWIK_BADGE_FILE_MAP[slug] ?? slug;
|
|
39
|
+
return `${baseUrl.replace(/\/$/, '')}/${fileName}.webp`;
|
|
40
|
+
}
|