-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #110 from Giveth/feat/handle-retro-list
Handle importing project from retro list
- Loading branch information
Showing
6 changed files
with
107 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
import { SourceConfig } from "../types"; | ||
import { RoundNumber } from "./type"; | ||
|
||
// Define RL_API_URLS with specific round number keys | ||
export const RL_API_URLS: Record<RoundNumber, string> = { | ||
4: process.env.RL4_API_URL || "https://round4-api-eas.retrolist.app/projects", | ||
5: | ||
process.env.RL5_API_URL || | ||
"https://round5-api-eas.retrolist.app/5/projects", | ||
}; | ||
|
||
export const rlSourceConfig: SourceConfig = { | ||
source: "rf", | ||
idField: "id", | ||
titleField: "name", | ||
descriptionField: "description", | ||
imageField: "bannerImageUrl", | ||
urlField: "url", | ||
rfRoundField: "rfRound", | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import { type RlProjectInfo } from "./type"; | ||
|
||
export const generateRlUrl = (project: RlProjectInfo) => { | ||
return `/project/${project.id}`; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
import { updateOrCreateProject } from "../helpers"; | ||
import { rlSourceConfig } from "./constants"; | ||
import { generateRlUrl } from "./helper"; | ||
import { fetchRlProjects } from "./service"; | ||
|
||
export const fetchAndProcessRlProjects = async (round: number) => { | ||
try { | ||
const data = await fetchRlProjects(round); | ||
if (!data) return; | ||
for (const project of data) { | ||
const processedProject = { | ||
...project, | ||
url: generateRlUrl(project), | ||
rfRound: round, | ||
}; | ||
|
||
await updateOrCreateProject(processedProject, rlSourceConfig); | ||
} | ||
} catch (error: any) { | ||
console.log("error on fetchAndProcessRlProjects", error.message); | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
// Assuming RL_API_URLS and RlProjectInfo are defined as mentioned | ||
import { RL_API_URLS } from "./constants"; | ||
import { RlProjectInfo, RoundNumber } from "./type"; | ||
|
||
export const fetchRlProjects = async ( | ||
round: number | ||
): Promise<RlProjectInfo[] | null> => { | ||
console.log(`Fetching RL projects for round ${round}`); | ||
try { | ||
// Check if the round exists in RL_API_URLS | ||
if (!(round in RL_API_URLS)) { | ||
console.log(`Invalid round number: ${round}`); | ||
return null; | ||
} | ||
|
||
// Use type assertion to narrow down the type of 'round' to RoundNumber | ||
const url = RL_API_URLS[round as RoundNumber]; | ||
const res = await fetch(url, { | ||
method: "GET", | ||
headers: { | ||
"Content-Type": "application/json", | ||
}, | ||
}); | ||
|
||
// Check if the response is ok (status code in the range 200-299) | ||
if (!res.ok) { | ||
console.log(`Failed to fetch data: ${res.status} ${res.statusText}`); | ||
return null; | ||
} | ||
|
||
const data: RlProjectInfo[] = await res.json(); | ||
console.log(`Fetched ${data.length} projects for round ${round}`); | ||
|
||
return data; | ||
} catch (error: any) { | ||
console.log("Error on fetching fetchRlProjects", error.message); | ||
return null; | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
export type RoundNumber = 4 | 5; | ||
|
||
export type RlProjectInfo = { | ||
id: string; | ||
name: string; | ||
displayName: string; | ||
description: string; | ||
bio: string; | ||
address: string; | ||
bannerImageUrl: string; | ||
profileImageUrl: string; | ||
impactCategory: string[]; | ||
primaryCategory: string; | ||
recategorization: string; | ||
prelimResult: string; | ||
reportReason: string; | ||
includedInBallots: number; | ||
}; |