Skip to content

Commit a346f05

Browse files
authored
[PROTOBUS] Move requestTotalTasksSize to protobus (RooCodeInc#3608)
* requestTotalTasksSize protobus migration * Fix EmpyRequest value error * removed hook * Removed task size refresh actions from backend
1 parent 35929b6 commit a346f05

File tree

8 files changed

+60
-40
lines changed

8 files changed

+60
-40
lines changed

.changeset/seven-toys-impress.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"claude-dev": patch
3+
---
4+
5+
requestTotalTasksSize protobus migration

proto/task.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ service TaskService {
1111
rpc cancelTask(EmptyRequest) returns (Empty);
1212
// Clears the current task
1313
rpc clearTask(EmptyRequest) returns (Empty);
14+
// Gets the total size of all tasks
15+
rpc getTotalTasksSize(EmptyRequest) returns (Int64);
1416
// Deletes multiple tasks with the given IDs
1517
rpc deleteTasksWithIds(StringArrayRequest) returns (Empty);
1618
// Creates a new task with the given text and optional images

src/core/controller/index.ts

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -357,11 +357,6 @@ export class Controller {
357357
}
358358
break
359359
}
360-
case "requestTotalTasksSize": {
361-
this.refreshTotalTasksSize()
362-
break
363-
}
364-
365360
case "fetchLatestMcpServersFromHub": {
366361
this.mcpHub?.sendLatestMcpServers()
367362
break
@@ -437,11 +432,9 @@ export class Controller {
437432
if (answer === "Delete All Except Favorites") {
438433
await this.deleteNonFavoriteTaskHistory()
439434
await this.postStateToWebview()
440-
this.refreshTotalTasksSize()
441435
} else if (answer === "Delete Everything") {
442436
await this.deleteAllTaskHistory()
443437
await this.postStateToWebview()
444-
this.refreshTotalTasksSize()
445438
}
446439
this.postMessageToWebview({ type: "relinquishControl" })
447440
break
@@ -1126,19 +1119,6 @@ export class Controller {
11261119
await this.postStateToWebview()
11271120
}
11281121

1129-
async refreshTotalTasksSize() {
1130-
getTotalTasksSize(this.context.globalStorageUri.fsPath)
1131-
.then((newTotalSize) => {
1132-
this.postMessageToWebview({
1133-
type: "totalTasksSize",
1134-
totalTasksSize: newTotalSize,
1135-
})
1136-
})
1137-
.catch((error) => {
1138-
console.error("Error calculating total tasks size:", error)
1139-
})
1140-
}
1141-
11421122
async deleteTaskWithId(id: string) {
11431123
console.info("deleteTaskWithId: ", id)
11441124

@@ -1181,7 +1161,7 @@ export class Controller {
11811161
console.debug(`Error deleting task:`, error)
11821162
}
11831163

1184-
this.refreshTotalTasksSize()
1164+
await this.postStateToWebview()
11851165
}
11861166

11871167
async deleteTaskFromState(id: string) {
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { Controller } from ".."
2+
import { EmptyRequest, Int64 } from "../../../shared/proto/common"
3+
import { getTotalTasksSize as calculateTotalTasksSize } from "../../../utils/storage"
4+
5+
/**
6+
* Gets the total size of all tasks including task data and checkpoints
7+
* @param controller The controller instance
8+
* @param _request The empty request
9+
* @returns The total size as an Int64 value
10+
*/
11+
export async function getTotalTasksSize(controller: Controller, _request: EmptyRequest): Promise<Int64> {
12+
const totalSize = await calculateTotalTasksSize(controller.context.globalStorageUri.fsPath)
13+
return Int64.create({ value: totalSize || 0 })
14+
}

src/shared/ExtensionMessage.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ export interface ExtensionMessage {
3737
| "userCreditsBalance"
3838
| "userCreditsUsage"
3939
| "userCreditsPayments"
40-
| "totalTasksSize"
4140
| "addToInput"
4241
| "browserConnectionResult"
4342
| "fileSearchResults"
@@ -82,7 +81,6 @@ export interface ExtensionMessage {
8281
userCreditsBalance?: BalanceResponse
8382
userCreditsUsage?: UsageTransaction[]
8483
userCreditsPayments?: PaymentTransaction[]
85-
totalTasksSize?: number | null
8684
success?: boolean
8785
endpoint?: string
8886
isBundled?: boolean

src/shared/WebviewMessage.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ export interface WebviewMessage {
2626
| "clearAllTaskHistory"
2727
| "fetchUserCreditsData"
2828
| "optionsResponse"
29-
| "requestTotalTasksSize"
3029
| "searchFiles"
3130
| "grpc_request"
3231
| "grpc_request_cancel"

webview-ui/src/components/history/HistoryView.tsx

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ const CustomFilterRadio = ({ checked, onChange, icon, label }: CustomFilterRadio
4747
}
4848

4949
const HistoryView = ({ onDone }: HistoryViewProps) => {
50-
const { taskHistory, totalTasksSize, filePaths } = useExtensionState()
50+
const extensionStateContext = useExtensionState()
51+
const { taskHistory, filePaths } = extensionStateContext
5152
const [searchQuery, setSearchQuery] = useState("")
5253
const [sortOption, setSortOption] = useState<SortOption>("newest")
5354
const [lastNonRelevantSort, setLastNonRelevantSort] = useState<SortOption | null>("newest")
@@ -131,10 +132,23 @@ const HistoryView = ({ onDone }: HistoryViewProps) => {
131132
}, [])
132133
useEvent("message", handleMessage)
133134

135+
const { totalTasksSize, setTotalTasksSize } = extensionStateContext
136+
137+
const fetchTotalTasksSize = useCallback(async () => {
138+
try {
139+
const response = await TaskServiceClient.getTotalTasksSize({})
140+
if (response && typeof response.value === "number") {
141+
setTotalTasksSize?.(response.value || 0)
142+
}
143+
} catch (error) {
144+
console.error("Error getting total tasks size:", error)
145+
}
146+
}, [setTotalTasksSize])
147+
134148
// Request total tasks size when component mounts
135149
useEffect(() => {
136-
vscode.postMessage({ type: "requestTotalTasksSize" })
137-
}, [])
150+
fetchTotalTasksSize()
151+
}, [fetchTotalTasksSize])
138152

139153
useEffect(() => {
140154
if (searchQuery && sortOption !== "mostRelevant" && !lastNonRelevantSort) {
@@ -160,16 +174,26 @@ const HistoryView = ({ onDone }: HistoryViewProps) => {
160174
})
161175
}, [])
162176

163-
const handleDeleteHistoryItem = useCallback((id: string) => {
164-
TaskServiceClient.deleteTasksWithIds({ value: [id] })
165-
}, [])
177+
const handleDeleteHistoryItem = useCallback(
178+
(id: string) => {
179+
TaskServiceClient.deleteTasksWithIds({ value: [id] })
180+
.then(() => fetchTotalTasksSize())
181+
.catch((error) => console.error("Error deleting task:", error))
182+
},
183+
[fetchTotalTasksSize],
184+
)
166185

167-
const handleDeleteSelectedHistoryItems = useCallback((ids: string[]) => {
168-
if (ids.length > 0) {
169-
TaskServiceClient.deleteTasksWithIds({ value: ids })
170-
setSelectedItems([])
171-
}
172-
}, [])
186+
const handleDeleteSelectedHistoryItems = useCallback(
187+
(ids: string[]) => {
188+
if (ids.length > 0) {
189+
TaskServiceClient.deleteTasksWithIds({ value: ids })
190+
.then(() => fetchTotalTasksSize())
191+
.catch((error) => console.error("Error deleting tasks:", error))
192+
setSelectedItems([])
193+
}
194+
},
195+
[fetchTotalTasksSize],
196+
)
173197

174198
const formatDate = useCallback((timestamp: number) => {
175199
const date = new Date(timestamp)

webview-ui/src/context/ExtensionStateContext.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ interface ExtensionStateContextType extends ExtensionState {
5959
setLocalWorkflowToggles: (toggles: Record<string, boolean>) => void
6060
setGlobalWorkflowToggles: (toggles: Record<string, boolean>) => void
6161
setMcpMarketplaceCatalog: (value: McpMarketplaceCatalog) => void
62+
setTotalTasksSize: (value: number | null) => void
6263

6364
// Navigation state setters
6465
setShowMcp: (value: boolean) => void
@@ -316,10 +317,6 @@ export const ExtensionStateContextProvider: React.FC<{
316317
}
317318
break
318319
}
319-
case "totalTasksSize": {
320-
setTotalTasksSize(message.totalTasksSize ?? null)
321-
break
322-
}
323320
}
324321
}, [])
325322

@@ -558,6 +555,7 @@ export const ExtensionStateContextProvider: React.FC<{
558555
globalWorkflowToggles: toggles,
559556
})),
560557
setMcpTab,
558+
setTotalTasksSize,
561559
}
562560

563561
return <ExtensionStateContext.Provider value={contextValue}>{children}</ExtensionStateContext.Provider>

0 commit comments

Comments
 (0)