Skip to content

Commit 4518ef9

Browse files
authored
Merge pull request #99 from Soumyosish/logo-fixing
fixed the logo problem
2 parents a5e5188 + 369ea7f commit 4518ef9

12 files changed

Lines changed: 196 additions & 153 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949

5050
<img src="https://user-images.githubusercontent.com/74038190/212284100-561aa473-3905-4a80-b561-0d28506553ee.gif" width="150%">
5151

52-
![GSSoC Logo](/Refixly/client/public/gssoc%20logo.png)
52+
![GSSoC Logo](client/public/gssoc_logo.png)
5353

5454
**🌟 Exciting News...**
5555

client/eslint.config.js

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import js from '@eslint/js'
2-
import globals from 'globals'
3-
import reactHooks from 'eslint-plugin-react-hooks'
4-
import reactRefresh from 'eslint-plugin-react-refresh'
5-
import { defineConfig, globalIgnores } from 'eslint/config'
1+
import js from '@eslint/js';
2+
import globals from 'globals';
3+
import reactHooks from 'eslint-plugin-react-hooks';
4+
import reactRefresh from 'eslint-plugin-react-refresh';
5+
import { defineConfig, globalIgnores } from 'eslint/config';
66

77
export default defineConfig([
88
globalIgnores(['dist']),
@@ -15,7 +15,12 @@ export default defineConfig([
1515
],
1616
languageOptions: {
1717
ecmaVersion: 2020,
18-
globals: globals.browser,
18+
globals: {
19+
...globals.browser,
20+
...globals.node,
21+
...globals.commonjs,
22+
vi: true,
23+
},
1924
parserOptions: {
2025
ecmaVersion: 'latest',
2126
ecmaFeatures: { jsx: true },
@@ -26,4 +31,14 @@ export default defineConfig([
2631
'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }],
2732
},
2833
},
29-
])
34+
{
35+
files: ['**/test/*.js'], // Target test files specifically
36+
languageOptions: {
37+
globals: {
38+
...globals.node,
39+
...globals.commonjs,
40+
vi: true,
41+
},
42+
},
43+
},
44+
]);

client/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
"scripts": {
77
"dev": "vite",
88
"build": "vite build",
9-
"lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
10-
"lint:fix": "eslint . --ext js,jsx --fix",
9+
"lint": "eslint \"**/*.{js,jsx}\" --report-unused-disable-directives --max-warnings 0",
10+
"lint:fix": "eslint \"**/*.{js,jsx}\" --fix",
1111
"preview": "vite preview",
1212
"test": "vitest",
1313
"test:ui": "vitest --ui",

client/src/Pages/Tutorial.jsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState, useEffect, useRef } from "react";
1+
import React, { useState, useEffect, useCallback} from "react";
22
import NavBar from "../components/NavBar";
33
import { Loader, Bookmark, FileQuestion, XCircle, Filter } from "lucide-react";
44
import toast from "react-hot-toast";
@@ -35,7 +35,7 @@ const Tutorial = () => {
3535
setRecentlyViewed(JSON.parse(storedRecentlyViewed));
3636
if (storedBookmarkedTutorials)
3737
setBookmarkedTutorials(JSON.parse(storedBookmarkedTutorials));
38-
}, []);
38+
}, [fetchTutorials]);
3939

4040
useEffect(() => {
4141
localStorage.setItem("searchHistory", JSON.stringify(searchHistory));
@@ -52,7 +52,7 @@ const Tutorial = () => {
5252
);
5353
}, [bookmarkedTutorials]);
5454

55-
const fetchTutorials = async (objectName, pageToken = "", append = false) => {
55+
const fetchTutorials = useCallback(async (objectName, pageToken = "", append = false) => {
5656
if (!objectName.trim()) {
5757
setError("Please enter a search term or select a category.");
5858
setTutorials([]);
@@ -84,7 +84,9 @@ const Tutorial = () => {
8484
} finally {
8585
setLoading(false);
8686
}
87-
};
87+
},
88+
[setError, setTutorials, setNextPageToken, setSearchHistory]
89+
);
8890

8991
const handleSearch = (e) => {
9092
e.preventDefault();

client/src/Pages/TutorialsPage.jsx

Lines changed: 48 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState, useEffect } from 'react';
1+
import React, { useState, useEffect, useCallback} from 'react';
22
import { useParams, Link } from 'react-router-dom';
33
import { Loader, Search, Bookmark } from 'lucide-react';
44
import NavBar from '../components/NavBar';
@@ -13,35 +13,59 @@ const TutorialsPage = () => {
1313
const [nextPageToken, setNextPageToken] = useState('');
1414
const [savedTutorials, setSavedTutorials] = useState([]);
1515

16-
const fetchTutorials = async (loadMore = false) => {
17-
setIsLoading(true);
18-
setError(null);
19-
if (!loadMore) {
20-
setTutorials([]);
16+
// const fetchTutorials = async (loadMore = false) => {
17+
// setIsLoading(true);
18+
// setError(null);
19+
// if (!loadMore) {
20+
// setTutorials([]);
21+
// }
22+
// try {
23+
// let apiUrl = `https://refixly.onrender.com/api/tutorials/${searchTerm}`;
24+
// if (loadMore && nextPageToken) {
25+
// apiUrl += `?pageToken=${nextPageToken}`;
26+
// }
27+
// const response = await fetch(apiUrl);
28+
// if (!response.ok) {
29+
// throw new Error('Failed to fetch tutorials.');
30+
// }
31+
// const data = await response.json();
32+
// setTutorials(prev => loadMore ? [...prev, ...data.tutorials] : data.tutorials);
33+
// setNextPageToken(data.nextPageToken || '');
34+
// } catch (err) {
35+
// setError(err.message);
36+
// } finally {
37+
// setIsLoading(false);
38+
// }
39+
// };
40+
const fetchTutorials = useCallback(async (loadMore = false) => {
41+
setIsLoading(true);
42+
setError(null);
43+
if (!loadMore) {
44+
setTutorials([]);
45+
}
46+
try {
47+
let apiUrl = `https://refixly.onrender.com/api/tutorials/${searchTerm}`;
48+
if (loadMore && nextPageToken) {
49+
apiUrl += `?pageToken=${nextPageToken}`;
2150
}
22-
try {
23-
let apiUrl = `https://refixly.onrender.com/api/tutorials/${searchTerm}`;
24-
if (loadMore && nextPageToken) {
25-
apiUrl += `?pageToken=${nextPageToken}`;
26-
}
27-
const response = await fetch(apiUrl);
28-
if (!response.ok) {
29-
throw new Error('Failed to fetch tutorials.');
30-
}
31-
const data = await response.json();
32-
setTutorials(prev => loadMore ? [...prev, ...data.tutorials] : data.tutorials);
33-
setNextPageToken(data.nextPageToken || '');
34-
} catch (err) {
35-
setError(err.message);
36-
} finally {
37-
setIsLoading(false);
51+
const response = await fetch(apiUrl);
52+
if (!response.ok) {
53+
throw new Error('Failed to fetch tutorials.');
3854
}
39-
};
55+
const data = await response.json();
56+
setTutorials(prev => loadMore ? [...prev, ...data.tutorials] : data.tutorials);
57+
setNextPageToken(data.nextPageToken || '');
58+
} catch (err) {
59+
setError(err.message);
60+
} finally {
61+
setIsLoading(false);
62+
}
63+
}, [searchTerm, nextPageToken]);
4064

4165
useEffect(() => {
4266
setSearchTerm(objectName);
4367
fetchTutorials();
44-
}, [objectName]);
68+
}, [objectName,fetchTutorials]);
4569

4670
const handleSearch = (e) => {
4771
e.preventDefault();

client/src/components/AIDamageDetection.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEffect, useState } from "react";
1+
import {useState } from "react";
22
import axios from "axios";
33
import AIResponseSection from "./AIResponseSection";
44

client/src/components/FAQAccordion.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useState } from "react";
2-
import { motion, AnimatePresence } from "framer-motion";
2+
import { AnimatePresence } from "framer-motion";
33

44
const FAQAccordion = ({ faqs }) => {
55
const [openIndex, setOpenIndex] = useState(null);

client/src/components/HomeFAQ.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useState } from "react";
2-
import { motion, AnimatePresence } from "framer-motion";
2+
import {AnimatePresence } from "framer-motion";
33

44
const HomeFAQ = ({ faqs }) => {
55
const [openIndex, setOpenIndex] = useState(null);
Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,4 @@
1-
// src/context/ThemeContext.jsx
2-
import { createContext, useState, useEffect } from "react";
1+
// src/context/ThemeContext.js
2+
import { createContext } from "react";
33

4-
export const ThemeContext = createContext();
5-
6-
export const ThemeProvider = ({ children }) => {
7-
const [theme, setTheme] = useState("light");
8-
9-
useEffect(() => {
10-
const savedTheme = localStorage.getItem("theme");
11-
if (savedTheme) setTheme(savedTheme);
12-
}, []);
13-
14-
useEffect(() => {
15-
if (theme === "dark") {
16-
document.documentElement.classList.add("dark");
17-
} else {
18-
document.documentElement.classList.remove("dark");
19-
}
20-
localStorage.setItem("theme", theme);
21-
}, [theme]);
22-
23-
const toggleTheme = () => setTheme((prev) => (prev === "light" ? "dark" : "light"));
24-
25-
return (
26-
<ThemeContext.Provider value={{ theme, toggleTheme }}>
27-
{children}
28-
</ThemeContext.Provider>
29-
);
30-
};
4+
export const ThemeContext = createContext();

0 commit comments

Comments
 (0)