diff --git a/native/calendar/entry.react.js b/native/calendar/entry.react.js
--- a/native/calendar/entry.react.js
+++ b/native/calendar/entry.react.js
@@ -31,7 +31,7 @@
 import { connectionSelector } from 'lib/selectors/keyserver-selectors.js';
 import { colorIsDark } from 'lib/shared/color-utils.js';
 import { entryKey } from 'lib/shared/entry-utils.js';
-import { threadHasPermission } from 'lib/shared/thread-utils.js';
+import { useThreadHasPermission } from 'lib/shared/thread-utils.js';
 import type {
   CalendarQuery,
   CreateEntryInfo,
@@ -209,6 +209,7 @@
   +createEntry: (info: CreateEntryInfo) => Promise<CreateEntryPayload>,
   +saveEntry: (info: SaveEntryInfo) => Promise<SaveEntryResult>,
   +deleteEntry: (info: DeleteEntryInfo) => Promise<DeleteEntryResult>,
+  +canEditEntry: boolean,
 };
 type State = {
   +editing: boolean,
@@ -478,15 +479,11 @@
     const heightStyle = { height: this.state.height };
     const entryStyle = { backgroundColor: threadColor };
     const opacity = editing ? 1.0 : 0.6;
-    const canEditEntry = threadHasPermission(
-      this.props.threadInfo,
-      threadPermissions.EDIT_ENTRIES,
-    );
     return (
       <TouchableWithoutFeedback onPress={this.props.onPressWhitespace}>
         <View style={this.props.styles.container}>
           <Button
-            disabled={!canEditEntry}
+            disabled={!this.props.canEditEntry}
             onPress={this.setActive}
             style={[this.props.styles.entry, entryStyle]}
             androidFormat="opacity"
@@ -590,8 +587,7 @@
   };
 
   makeActive(active: boolean) {
-    const { threadInfo } = this.props;
-    if (!threadHasPermission(threadInfo, threadPermissions.EDIT_ENTRIES)) {
+    if (!this.props.canEditEntry) {
       return;
     }
     this.props.makeActive(entryKey(this.props.entryInfo), active);
@@ -804,6 +800,11 @@
     );
     const online = connection.status === 'connected';
 
+    const canEditEntry = useThreadHasPermission(
+      threadInfo,
+      threadPermissions.EDIT_ENTRIES,
+    );
+
     return (
       <InternalEntry
         {...restProps}
@@ -818,6 +819,7 @@
         saveEntry={callSaveEntry}
         deleteEntry={callDeleteEntry}
         threadInfo={threadInfo}
+        canEditEntry={canEditEntry}
       />
     );
   },