mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-24 10:27:10 +02:00
Desktop: Fixes #10737: Fix Fix editing notes in "Conflicts" causes them to temporarily vanish (#10913)
This commit is contained in:
parent
02bdb7a79c
commit
33599324d6
@ -2,6 +2,7 @@ import { FormNote } from './types';
|
||||
|
||||
import HtmlToMd from '@joplin/lib/HtmlToMd';
|
||||
import Note from '@joplin/lib/models/Note';
|
||||
import { NoteEntity } from '@joplin/lib/services/database/types';
|
||||
const { MarkupToHtml } = require('@joplin/renderer');
|
||||
|
||||
export async function htmlToMarkdown(markupLanguage: number, html: string, originalCss: string): Promise<string> {
|
||||
@ -23,8 +24,7 @@ export async function htmlToMarkdown(markupLanguage: number, html: string, origi
|
||||
return newBody;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied
|
||||
export async function formNoteToNote(formNote: FormNote): Promise<any> {
|
||||
export async function formNoteToNote(formNote: FormNote): Promise<NoteEntity> {
|
||||
return {
|
||||
id: formNote.id,
|
||||
// Should also include parent_id and deleted_time so that the reducer
|
||||
@ -32,6 +32,7 @@ export async function formNoteToNote(formNote: FormNote): Promise<any> {
|
||||
// https://discourse.joplinapp.org/t/experimental-wysiwyg-editor-in-joplin/6915/57?u=laurent
|
||||
parent_id: formNote.parent_id,
|
||||
deleted_time: formNote.deleted_time,
|
||||
is_conflict: formNote.is_conflict,
|
||||
title: formNote.title,
|
||||
body: formNote.body,
|
||||
};
|
||||
|
@ -148,6 +148,7 @@ export interface FormNote {
|
||||
body: string;
|
||||
parent_id: string;
|
||||
is_todo: number;
|
||||
is_conflict?: number;
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied
|
||||
bodyEditorContent?: any;
|
||||
markup_language: number;
|
||||
|
@ -5,6 +5,7 @@ import useFormNote, { HookDependencies } from './useFormNote';
|
||||
import shim from '@joplin/lib/shim';
|
||||
import Resource from '@joplin/lib/models/Resource';
|
||||
import { join } from 'path';
|
||||
import { formNoteToNote } from '.';
|
||||
|
||||
const defaultFormNoteProps: HookDependencies = {
|
||||
syncStarted: false,
|
||||
@ -82,6 +83,39 @@ describe('useFormNote', () => {
|
||||
formNote.unmount();
|
||||
});
|
||||
|
||||
|
||||
// Lacking is_conflict has previously caused UI issues. See https://github.com/laurent22/joplin/pull/10913
|
||||
// for details.
|
||||
it('should preserve value of is_conflict on save', async () => {
|
||||
const testNote = await Note.save({ title: 'Test Note!', is_conflict: 1 });
|
||||
|
||||
const makeFormNoteProps = (): HookDependencies => {
|
||||
return {
|
||||
...defaultFormNoteProps,
|
||||
noteId: testNote.id,
|
||||
};
|
||||
};
|
||||
|
||||
const formNote = renderHook(props => useFormNote(props), {
|
||||
initialProps: makeFormNoteProps(),
|
||||
});
|
||||
await formNote.waitFor(() => {
|
||||
expect(formNote.result.current.formNote).toMatchObject({
|
||||
is_conflict: 1,
|
||||
title: testNote.title,
|
||||
});
|
||||
});
|
||||
|
||||
// Should preserve is_conflict after save.
|
||||
expect(await formNoteToNote(formNote.result.current.formNote)).toMatchObject({
|
||||
is_conflict: 1,
|
||||
deleted_time: 0,
|
||||
title: testNote.title,
|
||||
});
|
||||
|
||||
formNote.unmount();
|
||||
});
|
||||
|
||||
// It seems this test is crashing the worker on CI (out of memory), so disabling it for now.
|
||||
|
||||
// it('should reload the note when it is changed outside of the editor', async () => {
|
||||
|
@ -101,6 +101,7 @@ export default function useFormNote(dependencies: HookDependencies) {
|
||||
is_todo: n.is_todo,
|
||||
parent_id: n.parent_id,
|
||||
deleted_time: n.deleted_time,
|
||||
is_conflict: n.is_conflict,
|
||||
bodyWillChangeId: 0,
|
||||
bodyChangeId: 0,
|
||||
markup_language: n.markup_language,
|
||||
|
Loading…
Reference in New Issue
Block a user