anujjoshi3105's picture
first commit
3d23b0f
import {
ContestRankingResponse,
UserRatingResponse,
UserData,
DailyProblemData,
SelectProblemData,
ProblemSetQuestionListData,
UserProfileResponse,
} from '../types';
export function formatUserRating(data: any, username: string): UserRatingResponse {
if (!data || !data.userContestRanking) {
throw new Error('User not found or no contest data');
}
const ranking = data.userContestRanking;
const rating = Math.round(ranking.rating);
const level = ranking.badge?.name;
return {
username,
platform: 'leetcode',
rating,
contests_participated: ranking.attendedContestsCount,
level,
rank: ranking.globalRanking,
top_percentage: ranking.topPercentage,
};
}
export function formatContestRanking(data: any): ContestRankingResponse {
return {
userContestRanking: data.userContestRanking,
userContestRankingHistory: data.userContestRankingHistory || [],
};
}
export const formatUserData = (data: UserData) => ({
username: data.matchedUser.username,
name: data.matchedUser.profile.realName,
birthday: data.matchedUser.profile.birthday,
avatar: data.matchedUser.profile.userAvatar,
ranking: data.matchedUser.profile.ranking,
reputation: data.matchedUser.profile.reputation,
gitHub: data.matchedUser.githubUrl,
twitter: data.matchedUser.twitterUrl,
linkedIN: data.matchedUser.linkedinUrl,
website: data.matchedUser.profile.websites,
country: data.matchedUser.profile.countryName,
company: data.matchedUser.profile.company,
school: data.matchedUser.profile.school,
skillTags: data.matchedUser.profile.skillTags,
about: data.matchedUser.profile.aboutMe,
});
export const formatBadgesData = (data: UserData) => ({
badgesCount: data.matchedUser.badges.length,
badges: data.matchedUser.badges,
upcomingBadges: data.matchedUser.upcomingBadges,
activeBadge: data.matchedUser.activeBadge,
});
export const formatSolvedProblemsData = (data: UserData) => ({
solvedProblem: data.matchedUser.submitStats.acSubmissionNum[0].count,
easySolved: data.matchedUser.submitStats.acSubmissionNum[1].count,
mediumSolved: data.matchedUser.submitStats.acSubmissionNum[2].count,
hardSolved: data.matchedUser.submitStats.acSubmissionNum[3].count,
totalSubmissionNum: data.matchedUser.submitStats.totalSubmissionNum,
acSubmissionNum: data.matchedUser.submitStats.acSubmissionNum,
});
export const formatSubmissionData = (data: UserData) => ({
count: data.recentSubmissionList.length,
submission: data.recentSubmissionList,
});
export const formatAcSubmissionData = (data: UserData) => ({
count: data.recentAcSubmissionList.length,
submission: data.recentAcSubmissionList,
});
export const formatSubmissionCalendarData = (data: UserData) => ({
activeYears: data.matchedUser.userCalendar.activeYears,
streak: data.matchedUser.userCalendar.streak,
totalActiveDays: data.matchedUser.userCalendar.totalActiveDays,
dccBadges: data.matchedUser.userCalendar.dccBadge,
submissionCalendar: data.matchedUser.userCalendar.submissionCalendar,
});
export const formatSkillStats = (data: UserData) => ({
fundamental: data.matchedUser.tagProblemCounts.fundamental,
intermediate: data.matchedUser.tagProblemCounts.intermediate,
advanced: data.matchedUser.tagProblemCounts.advanced,
});
export const formatLanguageStats = (data: UserData) => ({
languageProblemCount: data.matchedUser.languageProblemCount,
});
export const formatProgressStats = (data: UserData) => ({
numAcceptedQuestions: data.userProfileUserQuestionProgressV2,
});
export const formatUserProfileData = (data: UserProfileResponse) => {
return {
totalSolved: data.matchedUser.submitStats.acSubmissionNum[0].count,
totalSubmissions: data.matchedUser.submitStats.totalSubmissionNum,
totalQuestions: data.allQuestionsCount[0].count,
easySolved: data.matchedUser.submitStats.acSubmissionNum[1].count,
totalEasy: data.allQuestionsCount[1].count,
mediumSolved: data.matchedUser.submitStats.acSubmissionNum[2].count,
totalMedium: data.allQuestionsCount[2].count,
hardSolved: data.matchedUser.submitStats.acSubmissionNum[3].count,
totalHard: data.allQuestionsCount[3].count,
ranking: data.matchedUser.profile.ranking,
contributionPoint: data.matchedUser.contributions.points,
reputation: data.matchedUser.profile.reputation,
submissionCalendar: JSON.parse(data.matchedUser.submissionCalendar),
recentSubmissions: data.recentSubmissionList,
matchedUserStats: data.matchedUser.submitStats,
};
};
export const formatDailyData = (data: DailyProblemData) => ({
questionLink: `https://leetcode.com${data.activeDailyCodingChallengeQuestion.link}`,
date: data.activeDailyCodingChallengeQuestion.date,
questionId: data.activeDailyCodingChallengeQuestion.question.questionId,
questionFrontendId:
data.activeDailyCodingChallengeQuestion.question.questionFrontendId,
questionTitle: data.activeDailyCodingChallengeQuestion.question.title,
titleSlug: data.activeDailyCodingChallengeQuestion.question.titleSlug,
difficulty: data.activeDailyCodingChallengeQuestion.question.difficulty,
isPaidOnly: data.activeDailyCodingChallengeQuestion.question.isPaidOnly,
question: data.activeDailyCodingChallengeQuestion.question.content,
exampleTestcases:
data.activeDailyCodingChallengeQuestion.question.exampleTestcases,
topicTags: data.activeDailyCodingChallengeQuestion.question.topicTags,
hints: data.activeDailyCodingChallengeQuestion.question.hints,
solution: data.activeDailyCodingChallengeQuestion.question.solution,
companyTagStats:
data.activeDailyCodingChallengeQuestion.question.companyTagStats,
likes: data.activeDailyCodingChallengeQuestion.question.likes,
dislikes: data.activeDailyCodingChallengeQuestion.question.dislikes,
similarQuestions:
data.activeDailyCodingChallengeQuestion.question.similarQuestions,
});
export const formatQuestionData = (data: SelectProblemData) => ({
link: `https://leetcode.com/problems/${data.question.titleSlug}`,
questionId: data.question.questionId,
questionFrontendId: data.question.questionFrontendId,
questionTitle: data.question.title,
titleSlug: data.question.titleSlug,
difficulty: data.question.difficulty,
isPaidOnly: data.question.isPaidOnly,
question: data.question.content,
exampleTestcases: data.question.exampleTestcases,
topicTags: data.question.topicTags,
hints: data.question.hints,
solution: data.question.solution,
companyTagStats: data.question.companyTagStats,
likes: data.question.likes,
dislikes: data.question.dislikes,
similarQuestions: data.question.similarQuestions,
});
export const formatProblemsData = (data: ProblemSetQuestionListData) => ({
totalQuestions: data.problemsetQuestionList.total,
count: data.problemsetQuestionList.questions.length,
problemsetQuestionList: data.problemsetQuestionList.questions,
});
export const formatContestData = (data: any) => ({
contestAttend: data.userContestRanking?.attendedContestsCount,
contestRating: data.userContestRanking?.rating,
contestGlobalRanking: data.userContestRanking?.globalRanking,
totalParticipants: data.userContestRanking?.totalParticipants,
contestTopPercentage: data.userContestRanking?.topPercentage,
contestBadges: data.userContestRanking?.badge,
contestParticipation: data.userContestRankingHistory.filter(
(obj: any) => obj.attended === true,
),
});