aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--identity/context.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/identity/context.go b/identity/context.go
new file mode 100644
index 00000000..619e2c29
--- /dev/null
+++ b/identity/context.go
@@ -0,0 +1,26 @@
+package identity
+
+import (
+ "context"
+
+ "github.com/MichaelMure/git-bug/repository"
+)
+
+// identityCtxKey is a unique context key, accessible only in this struct.
+type identityCtxKey struct {
+ repo string
+}
+
+// AttachToContext attaches an Identity to a context.
+func AttachToContext(ctx context.Context, r repository.RepoCommon, u *Identity) context.Context {
+ return context.WithValue(ctx, identityCtxKey{r.GetPath()}, u)
+}
+
+// ForContext retrieves an Identity from the context, or nil if no Identity is present.
+func ForContext(ctx context.Context, r repository.RepoCommon) *Identity {
+ u, ok := ctx.Value(identityCtxKey{r.GetPath()}).(*Identity)
+ if !ok {
+ return nil
+ }
+ return u
+}