Merge remote-tracking branch 'upstream/develop' into account-menu-react
This commit is contained in:
@@ -11,6 +11,7 @@ APP_HOST=http://localhost:3001
|
||||
EXTENSIONS_MANAGER_LOCATION=extensions/extensions-manager/dist/index.html
|
||||
BATCH_MANAGER_LOCATION=extensions/batch-manager/dist/index.min.html
|
||||
SF_DEFAULT_SERVER=http://localhost:3000
|
||||
SF_NEXT_VERSION_SERVER=http://localhost:3000
|
||||
|
||||
# Development options
|
||||
DEV_DEFAULT_SYNC_SERVER=https://sync.standardnotes.org
|
||||
|
||||
@@ -108,10 +108,13 @@ The web app makes use of two optional native extensions, which, when running the
|
||||
BATCH_MANAGER_LOCATION=extensions/batch-manager/dist/index.min.html
|
||||
```
|
||||
|
||||
You can also set the `SF_DEFAULT_SERVER` environment variable to set the default server for login and registration.
|
||||
You can also set the `SF_DEFAULT_SERVER` and `SF_NEXT_VERSION_SERVER` environment variables to set the default servers for login and registration.
|
||||
|
||||
> **Note:** SF_NEXT_VERSION_SERVER can point to the same server. It is used for gradual upgrade of API versions.
|
||||
|
||||
```
|
||||
SF_DEFAULT_SERVER=https://sync.myserver
|
||||
SF_NEXT_VERSION_SERVER=https://sync.myserver
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -89,7 +89,8 @@ function reloadHiddenFirefoxTab(): boolean {
|
||||
|
||||
const startApplication: StartApplication = async function startApplication(
|
||||
defaultSyncServerHost: string,
|
||||
bridge: Bridge
|
||||
bridge: Bridge,
|
||||
nextVersionSyncServerHost: string,
|
||||
) {
|
||||
if (reloadHiddenFirefoxTab()) {
|
||||
return;
|
||||
@@ -106,6 +107,7 @@ const startApplication: StartApplication = async function startApplication(
|
||||
.config(configRoutes)
|
||||
.constant('bridge', bridge)
|
||||
.constant('defaultSyncServerHost', defaultSyncServerHost)
|
||||
.constant('nextVersionSyncServerHost', nextVersionSyncServerHost)
|
||||
.constant('appVersion', bridge.appVersion);
|
||||
|
||||
// Controllers
|
||||
@@ -188,7 +190,8 @@ const startApplication: StartApplication = async function startApplication(
|
||||
if (__WEB__) {
|
||||
startApplication(
|
||||
(window as any)._default_sync_server,
|
||||
new BrowserBridge(__VERSION__)
|
||||
new BrowserBridge(__VERSION__),
|
||||
(window as any)._next_version_sync_server
|
||||
);
|
||||
} else {
|
||||
(window as any).startApplication = startApplication;
|
||||
|
||||
@@ -72,11 +72,11 @@ export const NotesOptions = observer(
|
||||
const buttonRect = tagsButtonRef.current.getBoundingClientRect();
|
||||
const footerHeight = 32;
|
||||
|
||||
if ((buttonRect.top + maxTagsMenuSize) > (clientHeight - footerHeight)) {
|
||||
if (buttonRect.top + maxTagsMenuSize > clientHeight - footerHeight) {
|
||||
setTagsMenuMaxHeight(clientHeight - buttonRect.top - footerHeight - 2);
|
||||
}
|
||||
|
||||
if ((buttonRect.right + maxTagsMenuSize) > clientWidth) {
|
||||
if (buttonRect.right + maxTagsMenuSize > clientWidth) {
|
||||
setTagsMenuPosition({
|
||||
top: buttonRect.top,
|
||||
right: clientWidth - buttonRect.left,
|
||||
@@ -88,7 +88,6 @@ export const NotesOptions = observer(
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
setTagsMenuOpen(!tagsMenuOpen);
|
||||
};
|
||||
|
||||
@@ -169,7 +168,7 @@ export const NotesOptions = observer(
|
||||
{appState.tags.tags.map((tag) => (
|
||||
<button
|
||||
key={tag.title}
|
||||
className={`${buttonClass} py-2`}
|
||||
className={`${buttonClass} py-2 max-w-80`}
|
||||
onBlur={closeOnBlur}
|
||||
onClick={() => {
|
||||
appState.notes.isTagInSelectedNotes(tag)
|
||||
@@ -178,11 +177,12 @@ export const NotesOptions = observer(
|
||||
}}
|
||||
>
|
||||
<span
|
||||
className={
|
||||
appState.notes.isTagInSelectedNotes(tag)
|
||||
? 'font-bold'
|
||||
: ''
|
||||
}
|
||||
className={`whitespace-nowrap overflow-hidden overflow-ellipsis
|
||||
${
|
||||
appState.notes.isTagInSelectedNotes(tag)
|
||||
? 'font-bold'
|
||||
: ''
|
||||
}`}
|
||||
>
|
||||
{tag.title}
|
||||
</span>
|
||||
|
||||
@@ -2,5 +2,6 @@ import { Bridge } from "./services/bridge";
|
||||
|
||||
export type StartApplication = (
|
||||
defaultSyncServerHost: string,
|
||||
bridge: Bridge
|
||||
bridge: Bridge,
|
||||
nextVersionSyncServerHost: string
|
||||
) => Promise<void>;
|
||||
|
||||
@@ -53,6 +53,7 @@ export class WebApplication extends SNApplication {
|
||||
scope: angular.IScope,
|
||||
defaultSyncServerHost: string,
|
||||
public bridge: Bridge,
|
||||
nextVersionSyncServerHost: string,
|
||||
) {
|
||||
super(
|
||||
bridge.environment,
|
||||
@@ -62,7 +63,8 @@ export class WebApplication extends SNApplication {
|
||||
new AlertService(),
|
||||
identifier,
|
||||
[],
|
||||
defaultSyncServerHost
|
||||
defaultSyncServerHost,
|
||||
nextVersionSyncServerHost,
|
||||
);
|
||||
this.$compile = $compile;
|
||||
this.scope = scope;
|
||||
|
||||
@@ -28,7 +28,8 @@ export class ApplicationGroup extends SNApplicationGroup {
|
||||
$rootScope: ng.IRootScopeService,
|
||||
$timeout: ng.ITimeoutService,
|
||||
private defaultSyncServerHost: string,
|
||||
private bridge: Bridge
|
||||
private bridge: Bridge,
|
||||
private nextVersionSyncServerHost: string,
|
||||
) {
|
||||
super(new WebDeviceInterface($timeout, bridge));
|
||||
this.$compile = $compile;
|
||||
@@ -62,7 +63,8 @@ export class ApplicationGroup extends SNApplicationGroup {
|
||||
this.$compile,
|
||||
scope,
|
||||
this.defaultSyncServerHost,
|
||||
this.bridge
|
||||
this.bridge,
|
||||
this.nextVersionSyncServerHost,
|
||||
);
|
||||
const appState = new AppState(
|
||||
this.$rootScope,
|
||||
|
||||
@@ -171,6 +171,18 @@
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.whitespace-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.overflow-hidden {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.overflow-ellipsis {
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
/**
|
||||
* A button that is just an icon. Separated from .sn-button because there
|
||||
* is almost no style overlap.
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
<script>
|
||||
window._default_sync_server = "<%= ENV['SF_DEFAULT_SERVER'] %>";
|
||||
window._next_version_sync_server = "<%= ENV['SF_NEXT_VERSION_SERVER'] %>";
|
||||
window._extensions_manager_location = "<%= ENV['EXTENSIONS_MANAGER_LOCATION'] %>";
|
||||
window._batch_manager_location = "<%= ENV['BATCH_MANAGER_LOCATION'] %>";
|
||||
window._bugsnag_api_key = "<%= ENV['BUGSNAG_API_KEY'] %>";
|
||||
|
||||
9
config/initializers/json.rb
Normal file
9
config/initializers/json.rb
Normal file
@@ -0,0 +1,9 @@
|
||||
# fix for JSON deprecation warnings. See: https://github.com/flori/json/issues/399#issuecomment-734863279
|
||||
|
||||
module JSON
|
||||
module_function
|
||||
|
||||
def parse(source, opts = {})
|
||||
Parser.new(source, **opts).parse
|
||||
end
|
||||
end
|
||||
@@ -71,7 +71,7 @@
|
||||
"@reach/checkbox": "^0.13.2",
|
||||
"@reach/dialog": "^0.13.0",
|
||||
"@standardnotes/sncrypto-web": "1.2.10",
|
||||
"@standardnotes/snjs": "2.4.2",
|
||||
"@standardnotes/snjs": "2.5.0",
|
||||
"mobx": "^6.1.6",
|
||||
"mobx-react-lite": "^3.2.0",
|
||||
"preact": "^10.5.12"
|
||||
|
||||
Reference in New Issue
Block a user