1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-24 10:27:10 +02:00

Mobile: Fixes #11539: Fix missing "Insert Time" button

This commit is contained in:
Henry Heino 2024-12-19 09:05:33 -08:00
parent 9e80e2e072
commit 422a4732f3
6 changed files with 38 additions and 7 deletions

View File

@ -754,6 +754,7 @@ packages/app-mobile/components/screens/Note/Note.js
packages/app-mobile/components/screens/Note/commands/attachFile.js packages/app-mobile/components/screens/Note/commands/attachFile.js
packages/app-mobile/components/screens/Note/commands/hideKeyboard.js packages/app-mobile/components/screens/Note/commands/hideKeyboard.js
packages/app-mobile/components/screens/Note/commands/index.js packages/app-mobile/components/screens/Note/commands/index.js
packages/app-mobile/components/screens/Note/commands/insertDateTime.js
packages/app-mobile/components/screens/Note/commands/setTags.js packages/app-mobile/components/screens/Note/commands/setTags.js
packages/app-mobile/components/screens/Note/commands/toggleVisiblePanes.js packages/app-mobile/components/screens/Note/commands/toggleVisiblePanes.js
packages/app-mobile/components/screens/Note/types.js packages/app-mobile/components/screens/Note/types.js

1
.gitignore vendored
View File

@ -730,6 +730,7 @@ packages/app-mobile/components/screens/Note/Note.js
packages/app-mobile/components/screens/Note/commands/attachFile.js packages/app-mobile/components/screens/Note/commands/attachFile.js
packages/app-mobile/components/screens/Note/commands/hideKeyboard.js packages/app-mobile/components/screens/Note/commands/hideKeyboard.js
packages/app-mobile/components/screens/Note/commands/index.js packages/app-mobile/components/screens/Note/commands/index.js
packages/app-mobile/components/screens/Note/commands/insertDateTime.js
packages/app-mobile/components/screens/Note/commands/setTags.js packages/app-mobile/components/screens/Note/commands/setTags.js
packages/app-mobile/components/screens/Note/commands/toggleVisiblePanes.js packages/app-mobile/components/screens/Note/commands/toggleVisiblePanes.js
packages/app-mobile/components/screens/Note/types.js packages/app-mobile/components/screens/Note/types.js

View File

@ -23,6 +23,8 @@ const builtInCommandNames = [
EditorCommandType.IndentLess, EditorCommandType.IndentLess,
EditorCommandType.IndentMore, EditorCommandType.IndentMore,
'-', '-',
'insertDateTime',
'-',
EditorCommandType.EditLink, EditorCommandType.EditLink,
'setTags', 'setTags',
EditorCommandType.ToggleSearch, EditorCommandType.ToggleSearch,

View File

@ -69,6 +69,10 @@ const emptyArray: any[] = [];
const logger = Logger.create('screens/Note'); const logger = Logger.create('screens/Note');
interface InsertTextOptions {
newLine?: boolean;
}
interface Props extends BaseProps { interface Props extends BaseProps {
provisionalNoteIds: string[]; provisionalNoteIds: string[];
dispatch: Dispatch; dispatch: Dispatch;
@ -721,20 +725,21 @@ class NoteScreenComponent extends BaseScreenComponent<ComponentProps, State> imp
return await saveOriginalImage(); return await saveOriginalImage();
} }
private async insertText(text: string) { private async insertText(text: string, { newLine = false }: InsertTextOptions = {}) {
const newNote = { ...this.state.note }; const newNote = { ...this.state.note };
const separator = newLine ? '\n' : '';
if (this.state.mode === 'edit') { if (this.state.mode === 'edit') {
let newText = ''; let newText = '';
if (this.selection) { if (this.selection) {
newText = `\n${text}\n`; newText = `${separator}${text}${separator}`;
const prefix = newNote.body.substring(0, this.selection.start); const prefix = newNote.body.substring(0, this.selection.start);
const suffix = newNote.body.substring(this.selection.end); const suffix = newNote.body.substring(this.selection.end);
newNote.body = `${prefix}${newText}${suffix}`; newNote.body = `${prefix}${newText}${suffix}`;
} else { } else {
newText = `\n${text}`; newText = `${separator}${separator}${text}`;
newNote.body = `${newNote.body}\n${newText}`; newNote.body = `${newNote.body}${newText}`;
} }
if (this.useEditorBeta()) { if (this.useEditorBeta()) {
@ -747,7 +752,7 @@ class NoteScreenComponent extends BaseScreenComponent<ComponentProps, State> imp
} }
} }
} else { } else {
newNote.body += `\n${text}`; newNote.body += `${separator}${text}`;
} }
this.setState({ note: newNote }); this.setState({ note: newNote });
@ -830,7 +835,7 @@ class NoteScreenComponent extends BaseScreenComponent<ComponentProps, State> imp
resource = await Resource.save(resource, { isNew: true }); resource = await Resource.save(resource, { isNew: true });
const resourceTag = Resource.markupTag(resource); const resourceTag = Resource.markupTag(resource);
const newNote = await this.insertText(resourceTag); const newNote = await this.insertText(resourceTag, { newLine: true });
void this.refreshResource(resource, newNote.body); void this.refreshResource(resource, newNote.body);
@ -850,7 +855,7 @@ class NoteScreenComponent extends BaseScreenComponent<ComponentProps, State> imp
private cameraView_onInsertBarcode = (data: string) => { private cameraView_onInsertBarcode = (data: string) => {
this.setState({ showCamera: false }); this.setState({ showCamera: false });
void this.insertText(data); void this.insertText(data, { newLine: true });
}; };
private cameraView_onCancel() { private cameraView_onCancel() {

View File

@ -1,12 +1,14 @@
// AUTO-GENERATED using `gulp buildScriptIndexes` // AUTO-GENERATED using `gulp buildScriptIndexes`
import * as attachFile from './attachFile'; import * as attachFile from './attachFile';
import * as hideKeyboard from './hideKeyboard'; import * as hideKeyboard from './hideKeyboard';
import * as insertDateTime from './insertDateTime';
import * as setTags from './setTags'; import * as setTags from './setTags';
import * as toggleVisiblePanes from './toggleVisiblePanes'; import * as toggleVisiblePanes from './toggleVisiblePanes';
const index: any[] = [ const index: any[] = [
attachFile, attachFile,
hideKeyboard, hideKeyboard,
insertDateTime,
setTags, setTags,
toggleVisiblePanes, toggleVisiblePanes,
]; ];

View File

@ -0,0 +1,20 @@
import { CommandRuntime, CommandDeclaration, CommandContext } from '@joplin/lib/services/CommandService';
import { _ } from '@joplin/lib/locale';
import { CommandRuntimeProps } from '../types';
import time from '@joplin/lib/time';
export const declaration: CommandDeclaration = {
name: 'insertDateTime',
label: () => _('Insert time'),
iconName: 'material calendar-plus',
};
export const runtime = (props: CommandRuntimeProps): CommandRuntime => {
return {
execute: async (_context: CommandContext) => {
props.insertText(time.formatDateToLocal(new Date()));
},
enabledCondition: '!noteIsReadOnly',
};
};