Skip to content
Extraits de code Groupes Projets
Valider ea32047a rédigé par Delphine van Rossum's avatar Delphine van Rossum
Parcourir les fichiers

reply to message stay if edited previous mess

parent a76efb05
Aucune branche associée trouvée
Aucune étiquette associée trouvée
2 requêtes de fusion!29Dev,!27reply to message stay if edited previous mess
...@@ -127,10 +127,14 @@ class Message(Base): ...@@ -127,10 +127,14 @@ class Message(Base):
user_id = Column(Integer, ForeignKey("users.id")) user_id = Column(Integer, ForeignKey("users.id"))
session_id = Column(Integer, ForeignKey("sessions.id")) session_id = Column(Integer, ForeignKey("sessions.id"))
created_at = Column(DateTime, default=datetime_aware) created_at = Column(DateTime, default=datetime_aware)
reply_to_message_id = Column(Integer, ForeignKey("messages.id"), nullable=True) reply_to_message_id = Column(
Integer, ForeignKey("messages.message_id"), nullable=True
)
feedbacks = relationship("MessageFeedback", backref="message") feedbacks = relationship("MessageFeedback", backref="message")
replies = relationship("Message", backref="parent_message", remote_side=[id]) replies = relationship(
"Message", backref="parent_message", remote_side=[message_id]
)
def raw(self): def raw(self):
return [ return [
......
...@@ -154,7 +154,7 @@ class Message(BaseModel): ...@@ -154,7 +154,7 @@ class Message(BaseModel):
user_id: int user_id: int
session_id: int session_id: int
created_at: NaiveDatetime created_at: NaiveDatetime
reply_to_message_id: int | None = None reply_to_message_id: str | None = None
feedbacks: list[MessageFeedback] feedbacks: list[MessageFeedback]
class Config: class Config:
...@@ -184,7 +184,7 @@ class MessageMetadataCreate(BaseModel): ...@@ -184,7 +184,7 @@ class MessageMetadataCreate(BaseModel):
class MessageCreate(BaseModel): class MessageCreate(BaseModel):
message_id: str | None = None message_id: str | None = None
content: str content: str
reply_to_message_id: int | None = None reply_to_message_id: str | None = None
metadata: list[MessageMetadataCreate] metadata: list[MessageMetadataCreate]
class Config: class Config:
......
...@@ -41,7 +41,7 @@ export async function createMessageAPI( ...@@ -41,7 +41,7 @@ export async function createMessageAPI(
id: number, id: number,
content: string, content: string,
metadata: { message: string; date: number }[], metadata: { message: string; date: number }[],
replyTo: number | null replyTo: string | null
): Promise<any | null> { ): Promise<any | null> {
const response = await fetch(`/api/sessions/${id}/messages`, { const response = await fetch(`/api/sessions/${id}/messages`, {
method: 'POST', method: 'POST',
......
...@@ -16,7 +16,7 @@ export default class Message { ...@@ -16,7 +16,7 @@ export default class Message {
private _edited: boolean = false; private _edited: boolean = false;
private _versions = writable([] as { content: string; date: Date }[]); private _versions = writable([] as { content: string; date: Date }[]);
private _feedbacks = writable([] as Feedback[]); private _feedbacks = writable([] as Feedback[]);
private _replyTo: number; private _replyTo: string;
public constructor( public constructor(
id: number, id: number,
...@@ -25,7 +25,7 @@ export default class Message { ...@@ -25,7 +25,7 @@ export default class Message {
created_at: Date, created_at: Date,
user: User, user: User,
session: Session, session: Session,
replyTo: number replyTo: string
) { ) {
this._id = id; this._id = id;
this._message_id = message_id; this._message_id = message_id;
...@@ -77,7 +77,7 @@ export default class Message { ...@@ -77,7 +77,7 @@ export default class Message {
return `message-${this._message_id}`; return `message-${this._message_id}`;
} }
get replyTo(): number { get replyTo(): string {
return this._replyTo; return this._replyTo;
} }
...@@ -85,7 +85,7 @@ export default class Message { ...@@ -85,7 +85,7 @@ export default class Message {
if (this._replyTo == null) return undefined; if (this._replyTo == null) return undefined;
return get(this._session.messages).find( return get(this._session.messages).find(
(m) => m instanceof Message && m.id == this._replyTo (m) => m instanceof Message && m.message_id == this._replyTo
) as Message | undefined; ) as Message | undefined;
} }
......
...@@ -201,7 +201,7 @@ export default class Session { ...@@ -201,7 +201,7 @@ export default class Session {
sender: User, sender: User,
content: string, content: string,
metadata: { message: string; date: number }[], metadata: { message: string; date: number }[],
replyTo: number | null replyTo: string | null
): Promise<Message | null> { ): Promise<Message | null> {
const json = await createMessageAPI(fetch, this.id, content, metadata, replyTo); const json = await createMessageAPI(fetch, this.id, content, metadata, replyTo);
if (json == null || json.id == null || json.message_id == null) { if (json == null || json.id == null || json.message_id == null) {
......
...@@ -37,7 +37,12 @@ ...@@ -37,7 +37,12 @@
if (message.length == 0) return; if (message.length == 0) return;
try { try {
const m = await session.sendMessage(user, message, [...metadata], replyTo?.id || null); const m = await session.sendMessage(
user,
message,
[...metadata],
replyTo?.message_id || null
);
if (m === null) { if (m === null) {
toastAlert($t('chatbox.sendError')); toastAlert($t('chatbox.sendError'));
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter