Charlie commited on
Commit
84f514d
·
1 Parent(s): c433511

update files

Browse files
Files changed (4) hide show
  1. dist/main.js +18 -2
  2. index.html +3 -0
  3. src/main.ts +24 -3
  4. styles/main.css +5 -0
dist/main.js CHANGED
@@ -299,7 +299,7 @@ async function getOrganizationInfo(accessToken) {
299
  }
300
  return response.json();
301
  }
302
- async function createRepository(accessToken, name) {
303
  const response = await fetch("https://huggingface.co/api/repos/create", {
304
  method: "POST",
305
  headers: {
@@ -309,6 +309,7 @@ async function createRepository(accessToken, name) {
309
  body: JSON.stringify({
310
  type: "model",
311
  name,
 
312
  private: false
313
  })
314
  });
@@ -334,9 +335,13 @@ var init = async () => {
334
  if (createRepoButton && repoNameInput) {
335
  createRepoButton.onclick = async () => {
336
  const repoName = repoNameInput.value.trim();
 
 
 
337
  if (repoName) {
338
  try {
339
- await createRepository(accessToken, repoName);
 
340
  repoNameInput.value = "";
341
  alert("Repository created successfully!");
342
  } catch (error) {
@@ -348,6 +353,17 @@ var init = async () => {
348
  }
349
  try {
350
  const orgInfo = await getOrganizationInfo(accessToken);
 
 
 
 
 
 
 
 
 
 
 
351
  const preElement = document.querySelector("pre");
352
  if (preElement) {
353
  preElement.textContent = JSON.stringify(
 
299
  }
300
  return response.json();
301
  }
302
+ async function createRepository(accessToken, name, organization) {
303
  const response = await fetch("https://huggingface.co/api/repos/create", {
304
  method: "POST",
305
  headers: {
 
309
  body: JSON.stringify({
310
  type: "model",
311
  name,
312
+ organization,
313
  private: false
314
  })
315
  });
 
335
  if (createRepoButton && repoNameInput) {
336
  createRepoButton.onclick = async () => {
337
  const repoName = repoNameInput.value.trim();
338
+ const orgSelect = document.getElementById(
339
+ "org-select"
340
+ );
341
  if (repoName) {
342
  try {
343
+ const selectedOrg = orgSelect?.value || void 0;
344
+ await createRepository(accessToken, repoName, selectedOrg);
345
  repoNameInput.value = "";
346
  alert("Repository created successfully!");
347
  } catch (error) {
 
353
  }
354
  try {
355
  const orgInfo = await getOrganizationInfo(accessToken);
356
+ const orgSelect = document.getElementById(
357
+ "org-select"
358
+ );
359
+ if (orgSelect && orgInfo.organizations) {
360
+ orgInfo.organizations.forEach((org) => {
361
+ const option = document.createElement("option");
362
+ option.value = org.name;
363
+ option.textContent = org.name;
364
+ orgSelect.appendChild(option);
365
+ });
366
+ }
367
  const preElement = document.querySelector("pre");
368
  if (preElement) {
369
  preElement.textContent = JSON.stringify(
index.html CHANGED
@@ -16,6 +16,9 @@
16
  <button id="signout" style="display: none;" class="auth-button">Sign out</button>
17
  </div>
18
  <div id="repo-form" style="display: none;" class="repo-form">
 
 
 
19
  <input type="text" id="repo-name" placeholder="Enter repository name" class="repo-input">
20
  <button id="create-repo" class="repo-button">Create Repository</button>
21
  </div>
 
16
  <button id="signout" style="display: none;" class="auth-button">Sign out</button>
17
  </div>
18
  <div id="repo-form" style="display: none;" class="repo-form">
19
+ <select id="org-select" class="repo-input">
20
+ <option value="">Personal Account</option>
21
+ </select>
22
  <input type="text" id="repo-name" placeholder="Enter repository name" class="repo-input">
23
  <button id="create-repo" class="repo-button">Create Repository</button>
24
  </div>
src/main.ts CHANGED
@@ -41,7 +41,8 @@ async function getOrganizationInfo(
41
 
42
  async function createRepository(
43
  accessToken: string,
44
- name: string
 
45
  ): Promise<void> {
46
  const response = await fetch("https://huggingface.co/api/repos/create", {
47
  method: "POST",
@@ -52,6 +53,7 @@ async function createRepository(
52
  body: JSON.stringify({
53
  type: "model",
54
  name: name,
 
55
  private: false,
56
  }),
57
  });
@@ -84,9 +86,13 @@ const init = async (): Promise<void> => {
84
  if (createRepoButton && repoNameInput) {
85
  createRepoButton.onclick = async () => {
86
  const repoName = repoNameInput.value.trim();
 
 
 
87
  if (repoName) {
88
  try {
89
- await createRepository(accessToken, repoName);
 
90
  repoNameInput.value = ""; // Clear input after success
91
  alert("Repository created successfully!");
92
  } catch (error) {
@@ -97,9 +103,24 @@ const init = async (): Promise<void> => {
97
  };
98
  }
99
 
100
- // Get organization info after successful authentication
101
  try {
102
  const orgInfo = await getOrganizationInfo(accessToken);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  const preElement = document.querySelector("pre");
104
  if (preElement) {
105
  preElement.textContent = JSON.stringify(
 
41
 
42
  async function createRepository(
43
  accessToken: string,
44
+ name: string,
45
+ organization?: string
46
  ): Promise<void> {
47
  const response = await fetch("https://huggingface.co/api/repos/create", {
48
  method: "POST",
 
53
  body: JSON.stringify({
54
  type: "model",
55
  name: name,
56
+ organization: organization,
57
  private: false,
58
  }),
59
  });
 
86
  if (createRepoButton && repoNameInput) {
87
  createRepoButton.onclick = async () => {
88
  const repoName = repoNameInput.value.trim();
89
+ const orgSelect = document.getElementById(
90
+ "org-select"
91
+ ) as HTMLSelectElement;
92
  if (repoName) {
93
  try {
94
+ const selectedOrg = orgSelect?.value || undefined;
95
+ await createRepository(accessToken, repoName, selectedOrg);
96
  repoNameInput.value = ""; // Clear input after success
97
  alert("Repository created successfully!");
98
  } catch (error) {
 
103
  };
104
  }
105
 
106
+ // Get organization info and populate org select after successful authentication
107
  try {
108
  const orgInfo = await getOrganizationInfo(accessToken);
109
+
110
+ // Populate org select
111
+ const orgSelect = document.getElementById(
112
+ "org-select"
113
+ ) as HTMLSelectElement;
114
+ if (orgSelect && orgInfo.organizations) {
115
+ orgInfo.organizations.forEach((org) => {
116
+ const option = document.createElement("option");
117
+ option.value = org.name;
118
+ option.textContent = org.name;
119
+ orgSelect.appendChild(option);
120
+ });
121
+ }
122
+
123
+ // Display full info in pre element
124
  const preElement = document.querySelector("pre");
125
  if (preElement) {
126
  preElement.textContent = JSON.stringify(
styles/main.css CHANGED
@@ -53,9 +53,14 @@ h2 {
53
  margin: 2rem auto;
54
  max-width: 400px;
55
  display: flex;
 
56
  gap: 1rem;
57
  }
58
 
 
 
 
 
59
  .repo-input {
60
  flex: 1;
61
  padding: 0.8rem;
 
53
  margin: 2rem auto;
54
  max-width: 400px;
55
  display: flex;
56
+ flex-wrap: wrap;
57
  gap: 1rem;
58
  }
59
 
60
+ .repo-form select.repo-input {
61
+ min-width: 200px;
62
+ }
63
+
64
  .repo-input {
65
  flex: 1;
66
  padding: 0.8rem;