feat(tsconnect): add outgoing file transfer progress notifications
- Export UpdateOutgoingFiles on taildrop.Extension so it can be called from outside the package (wasm bridge, package main). - Wrap sendFile's PUT body with progresstracking.NewReader so bytes-sent is sampled roughly once per second during transfer. - Create an OutgoingFile entry (with UUID, peer ID, name, declared size) before the PUT and call UpdateOutgoingFiles on each progress tick and on completion (setting Finished/Succeeded). This flows into the IPN notify stream as OutgoingFiles notifications. - Add jsOutgoingFile struct and wire n.OutgoingFiles into a new notifyOutgoingFiles callback in run(), mirroring notifyIncomingFiles. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -418,6 +418,13 @@ func (e *Extension) taildropTargetStatus(p tailcfg.NodeView, nb ipnext.NodeBacke
|
||||
return ipnstate.TaildropTargetAvailable
|
||||
}
|
||||
|
||||
// UpdateOutgoingFiles updates the tracked set of outgoing file transfers and
|
||||
// sends an ipn.Notify with the full merged list. The updates map is keyed by
|
||||
// OutgoingFile.ID; existing entries not present in updates are preserved.
|
||||
func (e *Extension) UpdateOutgoingFiles(updates map[string]*ipn.OutgoingFile) {
|
||||
e.updateOutgoingFiles(updates)
|
||||
}
|
||||
|
||||
// updateOutgoingFiles updates b.outgoingFiles to reflect the given updates and
|
||||
// sends an ipn.Notify with the full list of outgoingFiles.
|
||||
func (e *Extension) updateOutgoingFiles(updates map[string]*ipn.OutgoingFile) {
|
||||
|
||||
Reference in New Issue
Block a user