mirror of
https://github.com/FranP-code/Pomodoro-Timer-with-Clockify-integration.git
synced 2025-10-12 23:52:30 +00:00
Added selector of projects
This commit is contained in:
@@ -15,6 +15,9 @@ const ClockifyTasksDisplay = (props) => {
|
|||||||
const [workspaces, setWorkspaces] = useState([])
|
const [workspaces, setWorkspaces] = useState([])
|
||||||
const [workspacesReady, setWorkspacesReady] = useState(false)
|
const [workspacesReady, setWorkspacesReady] = useState(false)
|
||||||
|
|
||||||
|
const [projects, setProjects] = useState([])
|
||||||
|
const [projectsDone, setProjectsDone] = useState(false)
|
||||||
|
|
||||||
const getApiKey = async () => {
|
const getApiKey = async () => {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -41,7 +44,7 @@ const ClockifyTasksDisplay = (props) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const makeRequest = async (apiClockify) => {
|
const makeRequestWorkspaces = async (apiClockify) => {
|
||||||
try {
|
try {
|
||||||
const request = {
|
const request = {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
@@ -53,6 +56,8 @@ const ClockifyTasksDisplay = (props) => {
|
|||||||
const response = await fetch(`https://api.clockify.me/api/v1/workspaces/`, request)
|
const response = await fetch(`https://api.clockify.me/api/v1/workspaces/`, request)
|
||||||
const data = await response.json()
|
const data = await response.json()
|
||||||
|
|
||||||
|
setApiKey(apiClockify)
|
||||||
|
|
||||||
return await data
|
return await data
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -66,11 +71,10 @@ const ClockifyTasksDisplay = (props) => {
|
|||||||
|
|
||||||
console.log(apiKey)
|
console.log(apiKey)
|
||||||
|
|
||||||
const data = await makeRequest(key)
|
const data = await makeRequestWorkspaces(key)
|
||||||
|
|
||||||
if (data.code !== 1000) {
|
if (data.code !== 1000) {
|
||||||
setWorkspaces([])
|
let workspacesCopy = []
|
||||||
let workspacesCopy = await workspaces
|
|
||||||
|
|
||||||
await data.forEach(workspace => {
|
await data.forEach(workspace => {
|
||||||
|
|
||||||
@@ -109,12 +113,49 @@ const ClockifyTasksDisplay = (props) => {
|
|||||||
|
|
||||||
}, [props, onAuthStateChanged, setUserUID, userUID])
|
}, [props, onAuthStateChanged, setUserUID, userUID])
|
||||||
|
|
||||||
|
const makeRequestProjects = async (e) => {
|
||||||
|
|
||||||
|
try {
|
||||||
|
const request = {
|
||||||
|
method: "GET",
|
||||||
|
headers: {
|
||||||
|
'X-Api-Key': apiKey,
|
||||||
|
"content-type": "application/json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const response = await fetch(`https://api.clockify.me/api/v1/workspaces/${e}/projects`, request)
|
||||||
|
const data = await response.json()
|
||||||
|
|
||||||
|
console.log(data)
|
||||||
|
|
||||||
|
setProjectsDone(true)
|
||||||
|
|
||||||
|
return await data
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const defineProjects = async (e) => {
|
||||||
|
|
||||||
|
const data = await makeRequestProjects(e)
|
||||||
|
|
||||||
|
await setProjects(data)
|
||||||
|
|
||||||
|
if (projects) {
|
||||||
|
|
||||||
|
console.log(projects)
|
||||||
|
setProjectsDone(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<select>
|
<select onChange={(e) => {defineProjects(e.target.value)}}>
|
||||||
<option value="0">Select a Workspace</option>
|
<option value="0">Select a Workspace</option>
|
||||||
{
|
{
|
||||||
workspacesReady ?
|
workspacesReady ?
|
||||||
@@ -124,6 +165,19 @@ const ClockifyTasksDisplay = (props) => {
|
|||||||
: null
|
: null
|
||||||
}
|
}
|
||||||
</select>
|
</select>
|
||||||
|
<select>
|
||||||
|
{
|
||||||
|
projectsDone ?
|
||||||
|
projects.map( (project) => {
|
||||||
|
|
||||||
|
if (!project.archived){
|
||||||
|
return <option value={project.id} key={project.id}>{project.name}</option>
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
:null
|
||||||
|
}
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user