Session
-
+
diff --git a/build/notarize.js b/build/notarize.js
index ca8551f44..6e05292dc 100644
--- a/build/notarize.js
+++ b/build/notarize.js
@@ -34,6 +34,9 @@ exports.default = async function notarizing(context) {
appleId: SIGNING_APPLE_ID,
appleIdPassword: SIGNING_APP_PASSWORD,
};
- if (!isEmpty(SIGNING_TEAM_ID)) options.ascProvider = SIGNING_TEAM_ID;
+ if (!isEmpty(SIGNING_TEAM_ID)) {
+ options.ascProvider = SIGNING_TEAM_ID;
+ options.teamId = SIGNING_TEAM_ID;
+ }
return notarize(options);
};
diff --git a/package.json b/package.json
index 698688f30..e089592a4 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "session-desktop",
"productName": "Session",
"description": "Private messaging from your desktop",
- "version": "1.11.0",
+ "version": "1.11.1",
"license": "GPL-3.0",
"author": {
"name": "Oxen Labs",
diff --git a/password.html b/password.html
index 593a4c1d3..40e231221 100644
--- a/password.html
+++ b/password.html
@@ -23,7 +23,7 @@
script-src 'self' 'unsafe-inline';
style-src 'self' 'unsafe-inline';"
/>
-
+
diff --git a/preload.js b/preload.js
index 3ddc14cc4..643e7938f 100644
--- a/preload.js
+++ b/preload.js
@@ -31,6 +31,9 @@ window.sessionFeatureFlags = {
useTestNet: Boolean(
process.env.NODE_APP_INSTANCE && process.env.NODE_APP_INSTANCE.includes('testnet')
),
+ integrationTestEnv: Boolean(
+ process.env.NODE_APP_INSTANCE && process.env.NODE_APP_INSTANCE.includes('test-integration')
+ ),
useClosedGroupV3: false || process.env.USE_CLOSED_GROUP_V3,
debug: {
debugLogging: !_.isEmpty(process.env.SESSION_DEBUG),
diff --git a/ts/components/SessionContextMenuContainer.tsx b/ts/components/SessionContextMenuContainer.tsx
index 1aaacc48a..62b08808c 100644
--- a/ts/components/SessionContextMenuContainer.tsx
+++ b/ts/components/SessionContextMenuContainer.tsx
@@ -4,7 +4,7 @@ export const SessionContextMenuContainer = styled.div.attrs({
// custom props
})`
.react-contexify {
- // be sure it is more than the one set for the More Informations screen of messages
+ // be sure it is more than the one set for the More Information screen of messages
z-index: 30;
min-width: 200px;
box-shadow: 0px 0px 10px var(--context-menu-shadow-color) !important;
diff --git a/ts/components/buttons/MenuButton.tsx b/ts/components/buttons/MenuButton.tsx
index 07852d7d6..c07729e0c 100644
--- a/ts/components/buttons/MenuButton.tsx
+++ b/ts/components/buttons/MenuButton.tsx
@@ -27,7 +27,7 @@ const StyledMenuButton = styled.button`
`;
/**
- * This is the Session Menu Botton. i.e. the button on top of the conversation list to start a new conversation.
+ * This is the Session Menu Button. i.e. the button on top of the conversation list to start a new conversation.
* It has two state: selected or not and so we use an checkbox input to keep the state in sync.
*/
export const MenuButton = () => {
diff --git a/ts/components/conversation/message/message-content/MessageContextMenu.tsx b/ts/components/conversation/message/message-content/MessageContextMenu.tsx
index 407ee8220..7591a9ac6 100644
--- a/ts/components/conversation/message/message-content/MessageContextMenu.tsx
+++ b/ts/components/conversation/message/message-content/MessageContextMenu.tsx
@@ -48,6 +48,7 @@ import {
useMessageStatus,
useMessageTimestamp,
} from '../../../../state/selectors';
+import { useIsPublic } from '../../../../hooks/useParamSelector';
export type MessageContextMenuSelectorProps = Pick<
MessageRenderingProps,
@@ -148,10 +149,10 @@ const SaveAttachment = ({ messageId }: MessageId) => {
const AdminActionItems = ({ messageId }: MessageId) => {
const convoId = useSelectedConversationKey();
-
+ const isPublic = useIsPublic();
const weAreModerator = useSelectedWeAreModerator();
const weAreAdmin = useSelectedWeAreAdmin();
- const showAdminActions = weAreAdmin || weAreModerator;
+ const showAdminActions = (weAreAdmin || weAreModerator) && isPublic;
const sender = useMessageSender(messageId);
const isSenderAdmin = useMessageSenderIsAdmin(messageId);
diff --git a/ts/models/messageType.ts b/ts/models/messageType.ts
index 5c17fc02e..b7d972a41 100644
--- a/ts/models/messageType.ts
+++ b/ts/models/messageType.ts
@@ -237,7 +237,7 @@ export const fillMessageAttributesWithDefaults = (
id: uuidv4(),
unread: READ_MESSAGE_STATE.read, // if nothing is set, this message is considered read
});
- // this is just to cleanup a bit the db. delivered and delivered_to were removed, so everytime we load a message
+ // this is just to cleanup a bit the db. delivered and delivered_to were removed, so every time we load a message
// we make sure to clean those fields in the json.
// the next commit() will write that to the disk
if (defaulted.delivered) {
diff --git a/ts/node/sql.ts b/ts/node/sql.ts
index e7de8eed8..be0a9e684 100644
--- a/ts/node/sql.ts
+++ b/ts/node/sql.ts
@@ -409,7 +409,7 @@ function getConversationCount() {
/**
* Because the argument list can change when saving a conversation (and actually doing a lot of other stuff),
* it is not a good idea to try to use it to update a conversation while doing migrations.
- * Because everytime you'll update the saveConversation with a new argument, the migration you wrote a month ago still relies on the old way.
+ * Because every time you'll update the saveConversation with a new argument, the migration you wrote a month ago still relies on the old way.
* Because of that, there is no `instance` argument here, and you should not add one as this is only needed during migrations (which will break if you do it)
*/
diff --git a/ts/session/apis/open_group_api/sogsv3/sogsApiV3.ts b/ts/session/apis/open_group_api/sogsv3/sogsApiV3.ts
index d76c94e4b..6a110d873 100644
--- a/ts/session/apis/open_group_api/sogsv3/sogsApiV3.ts
+++ b/ts/session/apis/open_group_api/sogsv3/sogsApiV3.ts
@@ -560,7 +560,7 @@ export const handleBatchPollResults = async (
case 'updateRoom':
case 'deleteReaction':
// we do nothing for all of those, but let's make sure if we ever add something batch polled for, we include it's handling here.
- // the assertUnreachable will fail to compile everytime we add a new batch poll endpoint without taking care of it.
+ // the assertUnreachable will fail to compile every time we add a new batch poll endpoint without taking care of it.
break;
default:
assertUnreachable(
diff --git a/ts/session/apis/snode_api/getSwarmFor.ts b/ts/session/apis/snode_api/getSwarmFor.ts
index d9561be6a..3b881e5e7 100644
--- a/ts/session/apis/snode_api/getSwarmFor.ts
+++ b/ts/session/apis/snode_api/getSwarmFor.ts
@@ -83,7 +83,7 @@ async function requestSnodesForPubkeyWithTargetNode(
async function requestSnodesForPubkeyRetryable(pubKey: string): Promise> {
// don't catch exception in here. we want them to bubble up
- // this is the level where our targetNode is not yet known. We retry a few times with a new one everytime.
+ // this is the level where our targetNode is not yet known. We retry a few times with a new one every time.
// the idea is that the requestSnodesForPubkeyWithTargetNode will remove a failing targetNode
return pRetry(
async () => {
diff --git a/ts/session/apis/snode_api/swarmPolling.ts b/ts/session/apis/snode_api/swarmPolling.ts
index 3f3cfd4f0..c5ba50f60 100644
--- a/ts/session/apis/snode_api/swarmPolling.ts
+++ b/ts/session/apis/snode_api/swarmPolling.ts
@@ -91,7 +91,7 @@ export class SwarmPolling {
}
/**
- * Used fo testing only
+ * Used for testing only
*/
public resetSwarmPolling() {
this.groupPolling = [];
diff --git a/ts/session/group/closed-group.ts b/ts/session/group/closed-group.ts
index dd4ef423f..c70be25dc 100644
--- a/ts/session/group/closed-group.ts
+++ b/ts/session/group/closed-group.ts
@@ -458,7 +458,7 @@ async function generateAndSendNewEncryptionKeyPair(
await groupConvo?.commit(); // this makes sure to include the new encryption keypair in the libsession usergroup wrapper
};
- // this is to be sent to the group pubkey adress
+ // this is to be sent to the group pubkey address
await getMessageQueue().sendToGroup({
message: keypairsMessage,
namespace: SnodeNamespaces.ClosedGroupMessage,
diff --git a/ts/session/messages/outgoing/visibleMessage/VisibleMessage.ts b/ts/session/messages/outgoing/visibleMessage/VisibleMessage.ts
index c513523e8..2e6c19aab 100644
--- a/ts/session/messages/outgoing/visibleMessage/VisibleMessage.ts
+++ b/ts/session/messages/outgoing/visibleMessage/VisibleMessage.ts
@@ -204,7 +204,7 @@ export function buildProfileForOutgoingMessage(params: { lokiProfile?: LokiProfi
const displayName = params.lokiProfile?.displayName;
- // no need to iclude the avatarPointer if there is no profileKey associated with it.
+ // no need to include the avatarPointer if there is no profileKey associated with it.
const avatarPointer =
params.lokiProfile?.avatarPointer &&
!isEmpty(profileKey) &&
diff --git a/ts/session/sending/MessageQueue.ts b/ts/session/sending/MessageQueue.ts
index 97a0009cd..939bd5ea9 100644
--- a/ts/session/sending/MessageQueue.ts
+++ b/ts/session/sending/MessageQueue.ts
@@ -330,7 +330,7 @@ export class MessageQueue {
const us = UserUtils.getOurPubKeyFromCache();
let isSyncMessage = false;
if (us && destinationPk.isEqual(us)) {
- // We allow a message for ourselve only if it's a ConfigurationMessage, a ClosedGroupNewMessage,
+ // We allow a message for ourselves only if it's a ConfigurationMessage, a ClosedGroupNewMessage,
// or a message with a syncTarget set.
if (MessageSender.isSyncMessage(message)) {
diff --git a/ts/session/utils/libsession/libsession_utils_contacts.ts b/ts/session/utils/libsession/libsession_utils_contacts.ts
index 999f8c6a4..3b6ddc313 100644
--- a/ts/session/utils/libsession/libsession_utils_contacts.ts
+++ b/ts/session/utils/libsession/libsession_utils_contacts.ts
@@ -10,9 +10,9 @@ import { PubKey } from '../../types';
* It allows to make changes to the wrapper and keeps track of the decoded values of those in the in-memory cache named `mappedContactWrapperValues`.
*
* The wrapper content is just a blob which has no structure.
- * Rather than having to fetch the required data from it everytime we need it (during each rerendering), we keep a decoded cache here.
+ * Rather than having to fetch the required data from it every time we need it (during each rerendering), we keep a decoded cache here.
* Essentially, on app start we load all the content from the wrapper with `SessionUtilContact.refreshMappedValue` during the ConversationController initial load.
- * Then, everytime we do a change to the contacts wrapper, we do it through `insertContactFromDBIntoWrapperAndRefresh`.
+ * Then, every time we do a change to the contacts wrapper, we do it through `insertContactFromDBIntoWrapperAndRefresh`.
* This applies the change from the in-memory conversationModel to the ContactsWrapper, refetch the data from it and update the decoded cache `mappedContactWrapperValues` with the up to date data.
* It then triggers a UI refresh of that specific conversation with `triggerUIRefresh` to make sure whatever is displayed on screen is still up to date with the wrapper content.
*
diff --git a/ts/types/attachments/VisualAttachment.ts b/ts/types/attachments/VisualAttachment.ts
index 3bec31a77..3d24d52c4 100644
--- a/ts/types/attachments/VisualAttachment.ts
+++ b/ts/types/attachments/VisualAttachment.ts
@@ -140,7 +140,7 @@ export async function autoScaleAvatarBlob(file: File) {
* Shows the system file picker for images, scale the image down for avatar/opengroup measurements and return the blob objectURL on success
*/
export async function pickFileForAvatar(): Promise {
- if (process.env.NODE_APP_INSTANCE?.includes('test-integration')) {
+ if (window.sessionFeatureFlags.integrationTestEnv) {
window.log.info(
'shorting pickFileForAvatar as it does not work in playwright/notsending the filechooser event'
);
diff --git a/ts/window.d.ts b/ts/window.d.ts
index 143e45d96..2e5da8494 100644
--- a/ts/window.d.ts
+++ b/ts/window.d.ts
@@ -34,6 +34,7 @@ declare global {
useOnionRequests: boolean;
useTestNet: boolean;
useClosedGroupV3: boolean;
+ integrationTestEnv: boolean;
debug: {
debugLogging: boolean;
debugLibsessionDumps: boolean;