mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-05 08:10:14 +00:00
fix: package manager refresh state handling and item display
This commit is contained in:
parent
6f1befb235
commit
3e8d35b490
2 changed files with 18 additions and 17 deletions
|
|
@ -11,7 +11,7 @@ export class PackageManagerManager {
|
|||
private currentItems: PackageManagerItem[] = []
|
||||
public isFetching = false
|
||||
// Cache expiry time in milliseconds (set to a low value for testing)
|
||||
private static readonly CACHE_EXPIRY_MS = 10 * 1000 // 10 seconds (normally 3600000 = 1 hour)
|
||||
private static readonly CACHE_EXPIRY_MS = 3600000 // 1 hour
|
||||
|
||||
private gitFetcher: GitFetcher
|
||||
private cache: Map<string, { data: PackageManagerRepository; timestamp: number }> = new Map()
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ const PackageManagerView: React.FC<PackageManagerViewProps> = ({ onDone }) => {
|
|||
console.error("Failed to fetch package manager items:", error)
|
||||
setIsFetching(false)
|
||||
}
|
||||
}, [])
|
||||
}, []) // No dependencies needed since we're using state setters
|
||||
|
||||
// Fetch items on mount
|
||||
useEffect(() => {
|
||||
|
|
@ -210,6 +210,21 @@ const PackageManagerView: React.FC<PackageManagerViewProps> = ({ onDone }) => {
|
|||
const handleMessage = (event: MessageEvent) => {
|
||||
const message = event.data
|
||||
|
||||
// Always clear timeout and reset fetching state for any state update
|
||||
if (message.type === "state") {
|
||||
if (fetchTimeoutRef.current) {
|
||||
clearTimeout(fetchTimeoutRef.current)
|
||||
}
|
||||
setIsFetching(false)
|
||||
|
||||
// Only update items if they're present in the state
|
||||
if (message.state?.packageManagerItems !== undefined) {
|
||||
const receivedItems = message.state.packageManagerItems || []
|
||||
console.log("Received package manager items:", receivedItems.length)
|
||||
setItems([...receivedItems])
|
||||
}
|
||||
}
|
||||
|
||||
if (message.type === "packageManagerButtonClicked") {
|
||||
if (message.text) {
|
||||
// This is an error message
|
||||
|
|
@ -227,20 +242,6 @@ const PackageManagerView: React.FC<PackageManagerViewProps> = ({ onDone }) => {
|
|||
if (message.type === "repositoryRefreshComplete" && message.url) {
|
||||
setRefreshingUrls((prev) => prev.filter((url) => url !== message.url))
|
||||
}
|
||||
|
||||
if (message.type === "state" && message.state?.packageManagerItems !== undefined) {
|
||||
// Clear fetch timeout
|
||||
if (fetchTimeoutRef.current) {
|
||||
clearTimeout(fetchTimeoutRef.current)
|
||||
}
|
||||
|
||||
const receivedItems = message.state.packageManagerItems || []
|
||||
console.log("Received package manager items:", receivedItems.length)
|
||||
|
||||
// Always update items, even if empty
|
||||
setItems([...receivedItems])
|
||||
setIsFetching(false)
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener("message", handleMessage)
|
||||
|
|
@ -251,7 +252,7 @@ const PackageManagerView: React.FC<PackageManagerViewProps> = ({ onDone }) => {
|
|||
clearTimeout(fetchTimeoutRef.current)
|
||||
}
|
||||
}
|
||||
}, [fetchPackageManagerItems])
|
||||
}, [fetchPackageManagerItems]) // Include fetchPackageManagerItems in dependencies
|
||||
|
||||
const filteredItems = items.filter((item) => {
|
||||
if (filters.type && item.type !== filters.type) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue