Skip to content

Commit 0907a0d

Browse files
authored
Merge pull request #1015 from fcollonval/fcollonval/issue1014
Revert using default browser
2 parents fb53341 + a4be112 commit 0907a0d

File tree

4 files changed

+38
-63
lines changed

4 files changed

+38
-63
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@jupyterlab/git",
3-
"version": "0.32.1",
3+
"version": "0.32.2",
44
"description": "A JupyterLab extension for version control using git",
55
"main": "lib/index.js",
66
"types": "lib/index.d.ts",

src/commandsAndMenu.tsx

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@ import {
66
showDialog,
77
showErrorMessage,
88
Toolbar,
9-
ToolbarButton,
10-
WidgetTracker
9+
ToolbarButton
1110
} from '@jupyterlab/apputils';
1211
import { PathExt, URLExt } from '@jupyterlab/coreutils';
13-
import { FileBrowser } from '@jupyterlab/filebrowser';
12+
import { FileBrowser, FileBrowserModel } from '@jupyterlab/filebrowser';
1413
import { Contents, ContentsManager } from '@jupyterlab/services';
1514
import { ISettingRegistry } from '@jupyterlab/settingregistry';
1615
import { ITerminal } from '@jupyterlab/terminal';
@@ -33,9 +32,9 @@ import {
3332
diffIcon,
3433
discardIcon,
3534
gitIcon,
35+
historyIcon,
3636
openIcon,
37-
removeIcon,
38-
historyIcon
37+
removeIcon
3938
} from './style/icons';
4039
import {
4140
CommandIDs,
@@ -101,7 +100,7 @@ function pluralizedContextLabel(singular: string, plural: string) {
101100
export function addCommands(
102101
app: JupyterFrontEnd,
103102
gitModel: GitExtension,
104-
browserTracker: WidgetTracker<FileBrowser>,
103+
fileBrowserModel: FileBrowserModel,
105104
settings: ISettingRegistry.ISettings,
106105
trans: TranslationBundle
107106
): void {
@@ -178,7 +177,7 @@ export function addCommands(
178177
'Create an empty Git repository or reinitialize an existing one'
179178
),
180179
execute: async () => {
181-
const currentPath = browserTracker.currentWidget.model.path;
180+
const currentPath = fileBrowserModel.path;
182181
const result = await showDialog({
183182
title: trans.__('Initialize a Repository'),
184183
body: trans.__('Do you really want to make this directory a Git Repo?'),
@@ -311,14 +310,14 @@ export function addCommands(
311310
gitModel,
312311
Operation.Clone,
313312
trans,
314-
{ path: browserTracker.currentWidget.model.path, url: result.value }
313+
{ path: fileBrowserModel.path, url: result.value }
315314
);
316315
logger.log({
317316
message: trans.__('Successfully cloned'),
318317
level: Level.SUCCESS,
319318
details
320319
});
321-
await browserTracker.currentWidget.model.refresh();
320+
await fileBrowserModel.refresh();
322321
} catch (error) {
323322
console.error(
324323
'Encountered an error when cloning the repository. Error: ',
@@ -1044,17 +1043,9 @@ export function addMenuItems(
10441043
*/
10451044
export function addFileBrowserContextMenu(
10461045
model: IGitExtension,
1047-
tracker: WidgetTracker<FileBrowser>,
1046+
filebrowser: FileBrowser,
10481047
contextMenu: ContextMenuSvg
10491048
): void {
1050-
function getSelectedBrowserItems(): Contents.IModel[] {
1051-
const widget = tracker.currentWidget;
1052-
if (!widget) {
1053-
return [];
1054-
}
1055-
return toArray(widget.selectedItems());
1056-
}
1057-
10581049
let gitMenu: Menu;
10591050
let _commands: ContextCommandIDs[];
10601051
let _paths: string[];
@@ -1063,7 +1054,7 @@ export function addFileBrowserContextMenu(
10631054
const wasShown = menu.isVisible;
10641055
const parent = menu.parentMenu;
10651056

1066-
const items = getSelectedBrowserItems();
1057+
const items = toArray(filebrowser.selectedItems());
10671058
const statuses = new Set<Git.Status>(
10681059
items
10691060
.map(item => model.getFile(item.path)?.status)

src/index.ts

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ import { Git, IGitExtension } from './tokens';
2626
import { addCloneButton } from './widgets/gitClone';
2727
import { GitWidget } from './widgets/GitWidget';
2828

29+
export { DiffModel } from './components/diff/model';
2930
export { NotebookDiff } from './components/diff/NotebookDiff';
3031
export { PlainTextDiff } from './components/diff/PlainTextDiff';
31-
export { DiffModel } from './components/diff/model';
3232
export { Git, IGitExtension } from './tokens';
3333

3434
/**
@@ -74,7 +74,11 @@ async function activate(
7474
let settings: ISettingRegistry.ISettings;
7575
let serverSettings: Git.IServerSettings;
7676
// Get a reference to the default file browser extension
77-
let filebrowser = factory.tracker.currentWidget;
77+
// We don't use the current tracked browser because extension like jupyterlab-github
78+
// or jupyterlab-gitlab are defining new filebrowsers that we don't support.
79+
// And it is unlikely that another browser than the default will be used.
80+
// Ref: https://github.com/jupyterlab/jupyterlab-git/issues/1014
81+
const fileBrowser = factory.defaultBrowser;
7882
translator = translator || nullTranslator;
7983
const trans = translator.load('jupyterlab_git');
8084

@@ -133,8 +137,8 @@ async function activate(
133137
gitExtension = new GitExtension(docmanager, app.docRegistry, settings);
134138

135139
// Whenever we restore the application, sync the Git extension path
136-
Promise.all([app.restored, filebrowser.model.restored]).then(() => {
137-
gitExtension.pathRepository = filebrowser.model.path;
140+
Promise.all([app.restored, fileBrowser.model.restored]).then(() => {
141+
gitExtension.pathRepository = fileBrowser.model.path;
138142
});
139143

140144
const onPathChanged = (
@@ -145,28 +149,15 @@ async function activate(
145149
};
146150

147151
// Whenever the file browser path changes, sync the Git extension path
148-
filebrowser.model.pathChanged.connect(onPathChanged);
152+
fileBrowser.model.pathChanged.connect(onPathChanged);
149153

150154
const refreshBrowser = () => {
151-
filebrowser.model.refresh();
155+
fileBrowser.model.refresh();
152156
};
153157

154158
// Whenever the `HEAD` of the Git repository changes, refresh the file browser
155159
gitExtension.headChanged.connect(refreshBrowser);
156160

157-
// Handle file browser changes
158-
factory.tracker.currentChanged.connect((_, browser) => {
159-
filebrowser.model.pathChanged.disconnect(onPathChanged);
160-
161-
filebrowser = browser;
162-
gitExtension.pathRepository = filebrowser.model.path;
163-
filebrowser.model.pathChanged.connect(onPathChanged);
164-
165-
if (settings) {
166-
addCloneButton(gitExtension, filebrowser, app.commands);
167-
}
168-
});
169-
170161
// Whenever a user adds/renames/saves/deletes/modifies a file within the lab environment, refresh the Git status
171162
app.serviceManager.contents.fileChanged.connect(() =>
172163
gitExtension.refreshStatus()
@@ -175,14 +166,14 @@ async function activate(
175166
// Provided we were able to load application settings, create the extension widgets
176167
if (settings) {
177168
// Add JupyterLab commands
178-
addCommands(app, gitExtension, factory.tracker, settings, trans);
169+
addCommands(app, gitExtension, fileBrowser.model, settings, trans);
179170

180171
// Create the Git widget sidebar
181172
const gitPlugin = new GitWidget(
182173
gitExtension,
183174
settings,
184175
app.commands,
185-
factory.tracker,
176+
fileBrowser.model,
186177
trans
187178
);
188179
gitPlugin.id = 'jp-git-sessions';
@@ -205,13 +196,13 @@ async function activate(
205196
}
206197

207198
// Add a clone button to the file browser extension toolbar
208-
addCloneButton(gitExtension, filebrowser, app.commands);
199+
addCloneButton(gitExtension, fileBrowser, app.commands);
209200

210201
// Add the status bar widget
211202
addStatusBarWidget(statusBar, gitExtension, settings, trans);
212203

213204
// Add the context menu items for the default file browser
214-
addFileBrowserContextMenu(gitExtension, factory.tracker, app.contextMenu);
205+
addFileBrowserContextMenu(gitExtension, fileBrowser, app.contextMenu);
215206
}
216207

217208
// Register diff providers

src/widgets/GitWidget.tsx

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { ReactWidget, UseSignal, WidgetTracker } from '@jupyterlab/apputils';
2-
import { FileBrowser } from '@jupyterlab/filebrowser';
1+
import { ReactWidget, UseSignal } from '@jupyterlab/apputils';
2+
import { FileBrowserModel } from '@jupyterlab/filebrowser';
33
import { ISettingRegistry } from '@jupyterlab/settingregistry';
44
import { TranslationBundle } from '@jupyterlab/translation';
55
import { CommandRegistry } from '@lumino/commands';
@@ -22,7 +22,7 @@ export class GitWidget extends ReactWidget {
2222
model: GitExtension,
2323
settings: ISettingRegistry.ISettings,
2424
commands: CommandRegistry,
25-
browserTracker: WidgetTracker<FileBrowser>,
25+
fileBrowserModel: FileBrowserModel,
2626
trans: TranslationBundle,
2727
options?: Widget.IOptions
2828
) {
@@ -32,7 +32,7 @@ export class GitWidget extends ReactWidget {
3232

3333
this._trans = trans;
3434
this._commands = commands;
35-
this._browserTracker = browserTracker;
35+
this._fileBrowserModel = fileBrowserModel;
3636
this._model = model;
3737
this._settings = settings;
3838

@@ -67,21 +67,14 @@ export class GitWidget extends ReactWidget {
6767
<LoggerContext.Consumer>
6868
{logger => (
6969
<React.Fragment>
70-
<UseSignal
71-
signal={this._browserTracker.currentChanged}
72-
initialArgs={this._browserTracker.currentWidget}
73-
>
74-
{(tracker, filebrowser) => (
75-
<GitPanel
76-
commands={this._commands}
77-
filebrowser={filebrowser.model}
78-
logger={logger}
79-
model={this._model}
80-
settings={this._settings}
81-
trans={this._trans}
82-
/>
83-
)}
84-
</UseSignal>
70+
<GitPanel
71+
commands={this._commands}
72+
filebrowser={this._fileBrowserModel}
73+
logger={logger}
74+
model={this._model}
75+
settings={this._settings}
76+
trans={this._trans}
77+
/>
8578
<UseSignal
8679
signal={logger.signal}
8780
initialArgs={{ message: '', level: Level.INFO } as ILogMessage}
@@ -104,7 +97,7 @@ export class GitWidget extends ReactWidget {
10497
}
10598

10699
private _commands: CommandRegistry;
107-
private _browserTracker: WidgetTracker<FileBrowser>;
100+
private _fileBrowserModel: FileBrowserModel;
108101
private _model: GitExtension;
109102
private _settings: ISettingRegistry.ISettings;
110103
private _trans: TranslationBundle;

0 commit comments

Comments
 (0)