Page MenuHomePhabricator

D6531.diff
No OneTemporary

D6531.diff

diff --git a/keyserver/src/endpoints.js b/keyserver/src/endpoints.js
--- a/keyserver/src/endpoints.js
+++ b/keyserver/src/endpoints.js
@@ -41,6 +41,7 @@
threadLeaveResponder,
threadUpdateResponder,
threadCreationResponder,
+ threadFetchMediaResponder,
threadJoinResponder,
} from './responders/thread-responders.js';
import {
@@ -133,6 +134,10 @@
responder: messageFetchResponder,
requiredPolicies: baseLegalPolicies,
},
+ fetch_thread_media: {
+ responder: threadFetchMediaResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
get_session_public_keys: {
responder: getSessionPublicKeysResponder,
requiredPolicies: baseLegalPolicies,
diff --git a/keyserver/src/responders/thread-responders.js b/keyserver/src/responders/thread-responders.js
--- a/keyserver/src/responders/thread-responders.js
+++ b/keyserver/src/responders/thread-responders.js
@@ -15,6 +15,8 @@
type NewThreadResponse,
type ServerThreadJoinRequest,
type ThreadJoinResult,
+ type ThreadFetchMediaResult,
+ type ThreadFetchMediaRequest,
threadTypes,
} from 'lib/types/thread-types.js';
import { values } from 'lib/utils/objects.js';
@@ -31,6 +33,7 @@
} from './entry-responders.js';
import { createThread } from '../creators/thread-creator.js';
import { deleteThread } from '../deleters/thread-deleters.js';
+import { fetchMediaForThread } from '../fetchers/upload-fetchers.js';
import type { Viewer } from '../session/viewer.js';
import {
updateRole,
@@ -176,6 +179,20 @@
return await joinThread(viewer, request);
}
+const threadFetchMediaRequestInputValidator = tShape({
+ threadID: t.String,
+ limit: t.Number,
+ offset: t.Number,
+});
+async function threadFetchMediaResponder(
+ viewer: Viewer,
+ input: any,
+): Promise<ThreadFetchMediaResult> {
+ const request: ThreadFetchMediaRequest = input;
+ await validateInput(viewer, threadFetchMediaRequestInputValidator, request);
+ return await fetchMediaForThread(viewer, request);
+}
+
export {
threadDeletionResponder,
roleUpdateResponder,
@@ -184,5 +201,6 @@
threadUpdateResponder,
threadCreationResponder,
threadJoinResponder,
+ threadFetchMediaResponder,
newThreadRequestInputValidator,
};
diff --git a/lib/actions/thread-actions.js b/lib/actions/thread-actions.js
--- a/lib/actions/thread-actions.js
+++ b/lib/actions/thread-actions.js
@@ -10,6 +10,8 @@
NewThreadResult,
ClientThreadJoinRequest,
ThreadJoinPayload,
+ ThreadFetchMediaRequest,
+ ThreadFetchMediaResult,
} from '../types/thread-types.js';
import type { CallServerEndpoint } from '../utils/call-server-endpoint.js';
import { values } from '../utils/objects.js';
@@ -163,6 +165,15 @@
};
};
+const fetchThreadMedia =
+ (
+ callServerEndpoint: CallServerEndpoint,
+ ): ((request: ThreadFetchMediaRequest) => Promise<ThreadFetchMediaResult>) =>
+ async request => {
+ const response = await callServerEndpoint('fetch_thread_media', request);
+ return response;
+ };
+
export {
deleteThreadActionTypes,
deleteThread,
@@ -178,4 +189,5 @@
joinThread,
leaveThreadActionTypes,
leaveThread,
+ fetchThreadMedia,
};
diff --git a/lib/types/endpoints.js b/lib/types/endpoints.js
--- a/lib/types/endpoints.js
+++ b/lib/types/endpoints.js
@@ -61,6 +61,7 @@
FETCH_ENTRY_REVISIONS: 'fetch_entry_revisions',
FETCH_ERROR_REPORT_INFOS: 'fetch_error_report_infos',
FETCH_MESSAGES: 'fetch_messages',
+ FETCH_THREAD_MEDIA: 'fetch_thread_media',
GET_SESSION_PUBLIC_KEYS: 'get_session_public_keys',
JOIN_THREAD: 'join_thread',
LEAVE_THREAD: 'leave_thread',

File Metadata

Mime Type
text/plain
Expires
Fri, Nov 22, 1:53 PM (18 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2561502
Default Alt Text
D6531.diff (3 KB)

Event Timeline