@dialtribe/react-sdk 0.1.0-alpha.5 → 0.1.0-alpha.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.
@@ -8,6 +8,7 @@ function DialTribeProvider({
8
8
  sessionToken: initialToken,
9
9
  onTokenRefresh,
10
10
  onTokenExpired,
11
+ apiBaseUrl,
11
12
  children
12
13
  }) {
13
14
  const [sessionToken, setSessionTokenState] = useState(initialToken);
@@ -36,7 +37,8 @@ function DialTribeProvider({
36
37
  sessionToken,
37
38
  setSessionToken,
38
39
  isExpired,
39
- markExpired
40
+ markExpired,
41
+ apiBaseUrl
40
42
  };
41
43
  return /* @__PURE__ */ jsx(DialTribeContext.Provider, { value, children });
42
44
  }
@@ -51,18 +53,28 @@ function useDialTribe() {
51
53
  }
52
54
 
53
55
  // src/client/DialTribeClient.ts
54
- var DIALTRIBE_API_BASE = "https://dialtribe.com/api/public/v1";
55
- var ENDPOINTS = {
56
- broadcasts: `${DIALTRIBE_API_BASE}/broadcasts`,
57
- broadcast: (id) => `${DIALTRIBE_API_BASE}/broadcasts/${id}`,
58
- contentPlay: `${DIALTRIBE_API_BASE}/content/play`,
59
- presignedUrl: `${DIALTRIBE_API_BASE}/media/presigned-url`,
60
- sessionStart: `${DIALTRIBE_API_BASE}/session/start`,
61
- sessionPing: `${DIALTRIBE_API_BASE}/session/ping`
62
- };
56
+ function getDefaultApiBaseUrl() {
57
+ if (typeof process !== "undefined" && process.env?.NEXT_PUBLIC_DIALTRIBE_API_URL) {
58
+ return process.env.NEXT_PUBLIC_DIALTRIBE_API_URL;
59
+ }
60
+ return "https://dialtribe.com/api/public/v1";
61
+ }
62
+ var DIALTRIBE_API_BASE = getDefaultApiBaseUrl();
63
+ function getEndpoints(baseUrl = DIALTRIBE_API_BASE) {
64
+ return {
65
+ broadcasts: `${baseUrl}/broadcasts`,
66
+ broadcast: (id) => `${baseUrl}/broadcasts/${id}`,
67
+ contentPlay: `${baseUrl}/content/play`,
68
+ presignedUrl: `${baseUrl}/media/presigned-url`,
69
+ sessionStart: `${baseUrl}/session/start`,
70
+ sessionPing: `${baseUrl}/session/ping`
71
+ };
72
+ }
73
+ var ENDPOINTS = getEndpoints();
63
74
  var DialTribeClient = class {
64
75
  constructor(config) {
65
76
  this.config = config;
77
+ this.endpoints = config.apiBaseUrl ? getEndpoints(config.apiBaseUrl) : ENDPOINTS;
66
78
  }
67
79
  /**
68
80
  * Make an authenticated request to DialTribe API
@@ -109,7 +121,7 @@ var DialTribeClient = class {
109
121
  if (params?.broadcastStatus) searchParams.set("broadcastStatus", params.broadcastStatus.toString());
110
122
  if (params?.search) searchParams.set("search", params.search);
111
123
  if (params?.includeDeleted) searchParams.set("includeDeleted", "true");
112
- const url = `${ENDPOINTS.broadcasts}${searchParams.toString() ? `?${searchParams}` : ""}`;
124
+ const url = `${this.endpoints.broadcasts}${searchParams.toString() ? `?${searchParams}` : ""}`;
113
125
  const response = await this.fetch(url);
114
126
  if (!response.ok) {
115
127
  throw new Error(`Failed to fetch broadcasts: ${response.status} ${response.statusText}`);
@@ -120,7 +132,7 @@ var DialTribeClient = class {
120
132
  * Get a single broadcast by ID
121
133
  */
122
134
  async getBroadcast(id) {
123
- const response = await this.fetch(ENDPOINTS.broadcast(id));
135
+ const response = await this.fetch(this.endpoints.broadcast(id));
124
136
  if (!response.ok) {
125
137
  if (response.status === 404) {
126
138
  throw new Error("Broadcast not found");
@@ -142,7 +154,7 @@ var DialTribeClient = class {
142
154
  });
143
155
  if (params.hash) searchParams.set("hash", params.hash);
144
156
  if (params.action) searchParams.set("action", params.action);
145
- const url = `${ENDPOINTS.contentPlay}?${searchParams}`;
157
+ const url = `${this.endpoints.contentPlay}?${searchParams}`;
146
158
  const response = await this.fetch(url, {
147
159
  redirect: "manual"
148
160
  // Don't follow redirect, we want the URL
@@ -166,7 +178,7 @@ var DialTribeClient = class {
166
178
  hash: params.hash,
167
179
  fileType: params.fileType
168
180
  });
169
- const url = `${ENDPOINTS.presignedUrl}?${searchParams}`;
181
+ const url = `${this.endpoints.presignedUrl}?${searchParams}`;
170
182
  const response = await this.fetch(url);
171
183
  if (!response.ok) {
172
184
  throw new Error(`Failed to refresh URL: ${response.status} ${response.statusText}`);
@@ -179,7 +191,7 @@ var DialTribeClient = class {
179
191
  * @returns audienceId and optional resumePosition
180
192
  */
181
193
  async startSession(params) {
182
- const response = await this.fetch(ENDPOINTS.sessionStart, {
194
+ const response = await this.fetch(this.endpoints.sessionStart, {
183
195
  method: "POST",
184
196
  body: JSON.stringify(params)
185
197
  });
@@ -198,7 +210,7 @@ var DialTribeClient = class {
198
210
  * - 3: UNMOUNT
199
211
  */
200
212
  async sendSessionPing(params) {
201
- const response = await this.fetch(ENDPOINTS.sessionPing, {
213
+ const response = await this.fetch(this.endpoints.sessionPing, {
202
214
  method: "POST",
203
215
  body: JSON.stringify(params)
204
216
  });
@@ -741,11 +753,12 @@ function BroadcastPlayer({
741
753
  className = "",
742
754
  enableKeyboardShortcuts = false
743
755
  }) {
744
- const { sessionToken, setSessionToken, markExpired } = useDialTribe();
756
+ const { sessionToken, setSessionToken, markExpired, apiBaseUrl } = useDialTribe();
745
757
  const clientRef = useRef(null);
746
758
  if (!clientRef.current && sessionToken) {
747
759
  clientRef.current = new DialTribeClient({
748
760
  sessionToken,
761
+ apiBaseUrl,
749
762
  onTokenRefresh: (newToken, expiresAt) => {
750
763
  debug.log(`[DialTribeClient] Token refreshed, expires at ${expiresAt}`);
751
764
  setSessionToken(newToken, expiresAt);