diff --git a/app/web/src/components/ProfileSlashLogin/ProfileSlashLogin.tsx b/app/web/src/components/ProfileSlashLogin/ProfileSlashLogin.tsx
index f4102a4..c0ba080 100644
--- a/app/web/src/components/ProfileSlashLogin/ProfileSlashLogin.tsx
+++ b/app/web/src/components/ProfileSlashLogin/ProfileSlashLogin.tsx
@@ -7,33 +7,13 @@ import { ImageFallback } from 'src/components/ImageUploader'
import useUser from 'src/helpers/hooks/useUser'
import LoginModal from 'src/components/LoginModal'
-import Gravatar from 'src/components/Gravatar/Gravatar'
-import ProjectsOfUserCell from 'src/components/ProjectsOfUserCell'
+import RecentProjectsCell from 'src/components/RecentProjectsCell'
const ProfileSlashLogin = () => {
- const { logOut, isAuthenticated, currentUser, client } = useAuth()
+ const { logOut, isAuthenticated, currentUser } = useAuth()
const { user, loading } = useUser()
const [isLoginModalOpen, setIsLoginModalOpen] = useState(false)
- const [isOpen, setIsOpen] = useState(false)
- const [anchorEl, setAnchorEl] = useState(null)
- const [popoverId, setPopoverId] = useState(undefined)
- const openPopover = (target) => {
- setAnchorEl(target)
- setPopoverId('simple-popover')
- setIsOpen(true)
- }
- const closePopover = () => {
- setAnchorEl(null)
- setPopoverId(undefined)
- setIsOpen(false)
- }
- const togglePopover = ({ currentTarget }) => {
- if (isOpen) {
- return closePopover()
- }
- openPopover(currentTarget)
- }
const recordedLogin = () => {
ReactGA.event({
category: 'login',
@@ -87,9 +67,7 @@ const ProfileSlashLogin = () => {
Recent Projects
-
diff --git a/app/web/src/components/Projects/Projects.tsx b/app/web/src/components/Projects/Projects.tsx
index 14d541e..8753d40 100644
--- a/app/web/src/components/Projects/Projects.tsx
+++ b/app/web/src/components/Projects/Projects.tsx
@@ -1,17 +1,15 @@
import { useMemo } from 'react'
-import { Link, routes } from '@redwoodjs/router'
-import Svg from 'src/components/Svg/Svg'
-import CadPackage from 'src/components/CadPackage/CadPackage'
-
-import { countEmotes } from 'src/helpers/emote'
-import ImageUploader from 'src/components/ImageUploader'
+import type { Projects_Of_User } from 'types/graphql'
import ProjectCard from 'src/components/ProjectCard/ProjectCard'
const ProjectsList = ({
projects,
shouldFilterProjectsWithoutImage = false,
projectLimit = 80,
- isMinimal = false,
+}: {
+ projects: Projects_Of_User['projects']
+ shouldFilterProjectsWithoutImage: boolean
+ projectLimit: number
}) => {
// temporary filtering projects that don't have images until some kind of search is added and there are more things on the website
// it helps avoid the look of the website just being filled with dumby data.
@@ -34,7 +32,7 @@ const ProjectsList = ({
[projects, shouldFilterProjectsWithoutImage]
)
- return !isMinimal ? (
+ return (
- ) : (
-
-
- {filteredProjects.map(({ title, user }, index) => (
-
- {title.replace(/[-_]/g, ' ')}
-
- ))}
-
-
)
}
diff --git a/app/web/src/components/ProjectsCell/ProjectsCell.tsx b/app/web/src/components/ProjectsCell/ProjectsCell.tsx
index cccc6fe..55c9101 100644
--- a/app/web/src/components/ProjectsCell/ProjectsCell.tsx
+++ b/app/web/src/components/ProjectsCell/ProjectsCell.tsx
@@ -27,30 +27,19 @@ export const QUERY = gql`
export const Loading = () => Loading...
-export const Empty = ({ isMinimal = false }) => {
- return !isMinimal ? (
-
- {'No projects yet. '}
-
- {'Create one?'}
-
-
- ) : (
- None yet!
- )
+export const Empty = () => {
+ return {'No projects yet.'}
}
export const Success = ({
projects,
variables: { shouldFilterProjectsWithoutImage, projectLimit },
- isMinimal = false,
}) => {
return (
)
}
diff --git a/app/web/src/components/ProjectsOfUserCell/ProjectsOfUserCell.tsx b/app/web/src/components/ProjectsOfUserCell/ProjectsOfUserCell.tsx
index bddd1c2..b199806 100644
--- a/app/web/src/components/ProjectsOfUserCell/ProjectsOfUserCell.tsx
+++ b/app/web/src/components/ProjectsOfUserCell/ProjectsOfUserCell.tsx
@@ -1,7 +1,5 @@
-import { Link, routes } from '@redwoodjs/router'
-
+import type { Projects_Of_User } from 'types/graphql'
import Projects from 'src/components/Projects/Projects'
-
export const QUERY = gql`
query PROJECTS_OF_USER($userName: String!) {
projects(userName: $userName) {
@@ -20,6 +18,7 @@ export const QUERY = gql`
userName
}
Reaction {
+ id
emote
}
}
@@ -38,17 +37,18 @@ export const Empty = ({ isMinimal = false }) => {
export const Success = ({
projects,
- variables: { userName },
shouldFilterProjectsWithoutImage = false,
projectLimit = 80,
- isMinimal = false,
+}: {
+ projects: Projects_Of_User['projects']
+ shouldFilterProjectsWithoutImage: boolean
+ projectLimit: number
}) => {
return (
)
}
diff --git a/app/web/src/components/RecentProjectsCell/RecentProjectsCell.tsx b/app/web/src/components/RecentProjectsCell/RecentProjectsCell.tsx
new file mode 100644
index 0000000..f64c443
--- /dev/null
+++ b/app/web/src/components/RecentProjectsCell/RecentProjectsCell.tsx
@@ -0,0 +1,46 @@
+import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web'
+
+import type { Projects_Of_User } from 'types/graphql'
+import { Link, routes } from '@redwoodjs/router'
+import { QUERY as _QUERY } from 'src/components/ProjectsOfUserCell/ProjectsOfUserCell'
+
+export const QUERY = _QUERY
+
+export const Loading = () => Loading...
+
+export const Empty = () => None yet!
+
+export const Failure = ({ error }: CellFailureProps) => (
+ Error: {error.message}
+)
+
+export const Success = ({ projects }: CellSuccessProps) => {
+ const filteredProjects = React.useMemo(
+ () =>
+ projects
+ .slice(0, 3)
+ .sort(
+ (a, b) =>
+ new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime()
+ ),
+ [projects]
+ )
+ return (
+
+
+ {filteredProjects.map(({ title, user }, index) => (
+
+ {title.replace(/[-_]/g, ' ')}
+
+ ))}
+
+
+ )
+}
diff --git a/app/web/src/layouts/MainLayout/MainLayout.js b/app/web/src/layouts/MainLayout/MainLayout.js
index d4c65e1..fd17a0f 100644
--- a/app/web/src/layouts/MainLayout/MainLayout.js
+++ b/app/web/src/layouts/MainLayout/MainLayout.js
@@ -16,7 +16,7 @@ import Svg from 'src/components/Svg'
import { ImageFallback } from 'src/components/ImageUploader'
import useUser from 'src/helpers/hooks/useUser'
import './MainLayout.css'
-import ProjectsOfUserCell from 'src/components/ProjectsOfUserCell'
+import RecentProjectsCell from 'src/components/RecentProjectsCell'
let previousSubmission = ''
@@ -152,11 +152,7 @@ const MainLayout = ({ children, shouldRemoveFooterInIde }) => {
Recent Projects
-
+
)}