|
|
|
|
@ -5,6 +5,7 @@ import (
|
|
|
|
|
"errors"
|
|
|
|
|
"fmt"
|
|
|
|
|
"log/slog"
|
|
|
|
|
"reflect"
|
|
|
|
|
"runtime/debug"
|
|
|
|
|
|
|
|
|
|
"connectrpc.com/connect"
|
|
|
|
|
@ -56,7 +57,7 @@ func (*MetadataInterceptor) WrapUnary(next connect.UnaryFunc) connect.UnaryFunc
|
|
|
|
|
|
|
|
|
|
// Prevent browser caching of API responses to avoid stale data issues
|
|
|
|
|
// See: https://github.com/usememos/memos/issues/5470
|
|
|
|
|
if resp != nil && resp.Header() != nil {
|
|
|
|
|
if !isNilAnyResponse(resp) && resp.Header() != nil {
|
|
|
|
|
resp.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
|
|
|
|
|
resp.Header().Set("Pragma", "no-cache")
|
|
|
|
|
resp.Header().Set("Expires", "0")
|
|
|
|
|
@ -66,6 +67,14 @@ func (*MetadataInterceptor) WrapUnary(next connect.UnaryFunc) connect.UnaryFunc
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func isNilAnyResponse(resp connect.AnyResponse) bool {
|
|
|
|
|
if resp == nil {
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
val := reflect.ValueOf(resp)
|
|
|
|
|
return val.Kind() == reflect.Ptr && val.IsNil()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (*MetadataInterceptor) WrapStreamingClient(next connect.StreamingClientFunc) connect.StreamingClientFunc {
|
|
|
|
|
return next
|
|
|
|
|
}
|
|
|
|
|
|