Skip to content

Commit 680f9e4

Browse files
committed
Moves out static methods
1 parent b810cce commit 680f9e4

File tree

7 files changed

+60
-60
lines changed

7 files changed

+60
-60
lines changed

src/git/models/repository.ts

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import { showCreatePullRequestPrompt, showGenericErrorMessage } from '../../mess
99
import type { RepoComparisonKey } from '../../repositories';
1010
import { asRepoComparisonKey } from '../../repositories';
1111
import { getScopedCounter } from '../../system/counter';
12-
import { formatDate, fromNow } from '../../system/date';
1312
import { gate } from '../../system/decorators/gate';
1413
import { debug, log, logName } from '../../system/decorators/log';
1514
import { memoize } from '../../system/decorators/memoize';
@@ -38,10 +37,6 @@ export type GitProviderServiceForRepo = Pick<
3837
GitProviderRepoKeys
3938
>;
4039

41-
const millisecondsPerMinute = 60 * 1000;
42-
const millisecondsPerHour = 60 * 60 * 1000;
43-
const millisecondsPerDay = 24 * 60 * 60 * 1000;
44-
4540
const dotGitWatcherGlobFiles = 'index,HEAD,*_HEAD,MERGE_*,rebase-apply/**,rebase-merge/**,sequencer/**';
4641
const dotGitWatcherGlobWorktreeFiles =
4742
'worktrees/*,worktrees/**/index,worktrees/**/HEAD,worktrees/**/*_HEAD,worktrees/**/MERGE_*,worktrees/**/rebase-merge/**,worktrees/**/rebase-apply/**,worktrees/**/sequencer/**';
@@ -150,32 +145,6 @@ const instanceCounter = getScopedCounter();
150145

151146
@logName<Repository>((r, name) => `${name}(${r.id}|${r.instance})`)
152147
export class Repository implements Disposable {
153-
static formatLastFetched(lastFetched: number, short: boolean = true): string {
154-
const date = new Date(lastFetched);
155-
if (Date.now() - lastFetched < millisecondsPerDay) {
156-
return fromNow(date);
157-
}
158-
159-
if (short) {
160-
return formatDate(date, configuration.get('defaultDateShortFormat') ?? 'short');
161-
}
162-
163-
let format =
164-
configuration.get('defaultDateFormat') ??
165-
`dddd, MMMM Do, YYYY [at] ${configuration.get('defaultTimeFormat') ?? 'h:mma'}`;
166-
if (!/[hHm]/.test(format)) {
167-
format += ` [at] ${configuration.get('defaultTimeFormat') ?? 'h:mma'}`;
168-
}
169-
return formatDate(date, format);
170-
}
171-
172-
static getLastFetchedUpdateInterval(lastFetched: number): number {
173-
const timeDiff = Date.now() - lastFetched;
174-
return timeDiff < millisecondsPerDay
175-
? (timeDiff < millisecondsPerHour ? millisecondsPerMinute : millisecondsPerHour) / 2
176-
: 0;
177-
}
178-
179148
private _onDidChange = new EventEmitter<RepositoryChangeEvent>();
180149
get onDidChange(): Event<RepositoryChangeEvent> {
181150
return this._onDidChange.event;

src/git/models/repository.utils.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
import { formatDate, fromNow } from '../../system/date';
12
import { map } from '../../system/iterable';
3+
import { configuration } from '../../system/vscode/configuration';
24
import type { Repository } from './repository';
35

46
export async function groupRepositories(repositories: Repository[]): Promise<Map<Repository, Map<string, Repository>>> {
@@ -36,3 +38,33 @@ export async function groupRepositories(repositories: Repository[]): Promise<Map
3638

3739
return new Map(map(result, ([, r]) => [r.repo, r.worktrees]));
3840
}
41+
42+
const millisecondsPerMinute = 60 * 1000;
43+
const millisecondsPerHour = 60 * 60 * 1000;
44+
const millisecondsPerDay = 24 * 60 * 60 * 1000;
45+
46+
export function formatLastFetched(lastFetched: number, short: boolean = true): string {
47+
const date = new Date(lastFetched);
48+
if (Date.now() - lastFetched < millisecondsPerDay) {
49+
return fromNow(date);
50+
}
51+
52+
if (short) {
53+
return formatDate(date, configuration.get('defaultDateShortFormat') ?? 'short');
54+
}
55+
56+
let format =
57+
configuration.get('defaultDateFormat') ??
58+
`dddd, MMMM Do, YYYY [at] ${configuration.get('defaultTimeFormat') ?? 'h:mma'}`;
59+
if (!/[hHm]/.test(format)) {
60+
format += ` [at] ${configuration.get('defaultTimeFormat') ?? 'h:mma'}`;
61+
}
62+
return formatDate(date, format);
63+
}
64+
65+
export function getLastFetchedUpdateInterval(lastFetched: number): number {
66+
const timeDiff = Date.now() - lastFetched;
67+
return timeDiff < millisecondsPerDay
68+
? (timeDiff < millisecondsPerHour ? millisecondsPerMinute : millisecondsPerHour) / 2
69+
: 0;
70+
}

src/views/commitsView.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import { matchContributor } from '../git/models/contributor';
1111
import type { GitRevisionReference } from '../git/models/reference';
1212
import { getReferenceLabel } from '../git/models/reference.utils';
1313
import type { RepositoryChangeEvent } from '../git/models/repository';
14-
import { Repository, RepositoryChange, RepositoryChangeComparisonMode } from '../git/models/repository';
14+
import { RepositoryChange, RepositoryChangeComparisonMode } from '../git/models/repository';
15+
import { getLastFetchedUpdateInterval } from '../git/models/repository.utils';
1516
import type { GitUser } from '../git/models/user';
1617
import { showContributorsPicker } from '../quickpicks/contributorsPicker';
1718
import { getRepositoryOrShowPicker } from '../quickpicks/repositoryPicker';
@@ -83,13 +84,13 @@ export class CommitsRepositoryNode extends RepositoryFolderNode<CommitsView, Bra
8384
protected override async subscribe() {
8485
const lastFetched = (await this.repo?.getLastFetched()) ?? 0;
8586

86-
const interval = Repository.getLastFetchedUpdateInterval(lastFetched);
87+
const interval = getLastFetchedUpdateInterval(lastFetched);
8788
if (lastFetched !== 0 && interval > 0) {
8889
return Disposable.from(
8990
await super.subscribe(),
9091
disposableInterval(() => {
9192
// Check if the interval should change, and if so, reset it
92-
if (interval !== Repository.getLastFetchedUpdateInterval(lastFetched)) {
93+
if (interval !== getLastFetchedUpdateInterval(lastFetched)) {
9394
void this.resetSubscription();
9495
}
9596

src/views/nodes/abstract/repositoryFolderNode.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ import { MarkdownString, TreeItem, TreeItemCollapsibleState } from 'vscode';
33
import { GlyphChars } from '../../../constants';
44
import type { GitUri } from '../../../git/gitUri';
55
import { getHighlanderProviders } from '../../../git/models/remote';
6-
import type { RepositoryChangeEvent } from '../../../git/models/repository';
7-
import { Repository, RepositoryChange, RepositoryChangeComparisonMode } from '../../../git/models/repository';
6+
import type { Repository, RepositoryChangeEvent } from '../../../git/models/repository';
7+
import { RepositoryChange, RepositoryChangeComparisonMode } from '../../../git/models/repository';
8+
import { formatLastFetched } from '../../../git/models/repository.utils';
89
import { gate } from '../../../system/decorators/gate';
910
import { debug, log } from '../../../system/decorators/log';
1011
import { weakEvent } from '../../../system/event';
@@ -111,7 +112,7 @@ export abstract class RepositoryFolderNode<
111112
}
112113
}
113114
if (lastFetched) {
114-
item.description = `${item.description ?? ''}Last fetched ${Repository.formatLastFetched(lastFetched)}`;
115+
item.description = `${item.description ?? ''}Last fetched ${formatLastFetched(lastFetched)}`;
115116
}
116117

117118
let providerName;
@@ -128,10 +129,7 @@ export abstract class RepositoryFolderNode<
128129
item.tooltip = new MarkdownString(
129130
`${this.repo.formattedName ?? this.uri.repoPath ?? ''}${
130131
lastFetched
131-
? `${pad(GlyphChars.Dash, 2, 2)}Last fetched ${Repository.formatLastFetched(
132-
lastFetched,
133-
false,
134-
)}`
132+
? `${pad(GlyphChars.Dash, 2, 2)}Last fetched ${formatLastFetched(lastFetched, false)}`
135133
: ''
136134
}${this.repo.formattedName ? `\n${this.uri.repoPath}` : ''}\n\nCurrent branch $(git-branch) ${
137135
branch.name

src/views/nodes/branchNode.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ import type { GitLog } from '../../git/models/log';
1414
import type { PullRequest, PullRequestState } from '../../git/models/pullRequest';
1515
import type { GitBranchReference } from '../../git/models/reference';
1616
import { getHighlanderProviders } from '../../git/models/remote';
17-
import { Repository } from '../../git/models/repository';
17+
import type { Repository } from '../../git/models/repository';
18+
import { getLastFetchedUpdateInterval } from '../../git/models/repository.utils';
1819
import type { GitUser } from '../../git/models/user';
1920
import type { GitWorktree } from '../../git/models/worktree';
2021
import { getBranchIconPath, getRemoteIconPath, getWorktreeBranchIconPath } from '../../git/utils/vscode/icons';
@@ -803,15 +804,15 @@ export class CommitsCurrentBranchNode extends SubscribeableViewNode<'commits-cur
803804
protected async subscribe() {
804805
const lastFetched = (await this.getLastFetched()) ?? 0;
805806

806-
const interval = Repository.getLastFetchedUpdateInterval(lastFetched);
807+
const interval = getLastFetchedUpdateInterval(lastFetched);
807808
if (lastFetched !== 0 && interval > 0) {
808809
return Disposable.from(
809810
this.repo != null
810811
? weakEvent(this.repo.onDidChange, () => this.view.triggerNodeChange(this), this)
811812
: emptyDisposable,
812813
disposableInterval(() => {
813814
// Check if the interval should change, and if so, reset it
814-
if (interval !== Repository.getLastFetchedUpdateInterval(lastFetched)) {
815+
if (interval !== getLastFetchedUpdateInterval(lastFetched)) {
815816
void this.resetSubscription();
816817
}
817818

src/views/nodes/repositoryNode.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ import { Features } from '../../features';
44
import type { GitUri } from '../../git/gitUri';
55
import { GitBranch } from '../../git/models/branch';
66
import { getHighlanderProviders } from '../../git/models/remote';
7-
import type { RepositoryChangeEvent, RepositoryFileSystemChangeEvent } from '../../git/models/repository';
8-
import { Repository, RepositoryChange, RepositoryChangeComparisonMode } from '../../git/models/repository';
7+
import type { Repository, RepositoryChangeEvent, RepositoryFileSystemChangeEvent } from '../../git/models/repository';
8+
import { RepositoryChange, RepositoryChangeComparisonMode } from '../../git/models/repository';
9+
import { formatLastFetched, getLastFetchedUpdateInterval } from '../../git/models/repository.utils';
910
import type { GitStatus } from '../../git/models/status';
1011
import { getRepositoryStatusIconPath } from '../../git/utils/vscode/icons';
1112
import type {
@@ -205,9 +206,7 @@ export class RepositoryNode extends SubscribeableViewNode<'repository', ViewsWit
205206

206207
let description;
207208
let tooltip = `${this.repo.formattedName ?? this.uri.repoPath ?? ''}${
208-
lastFetched
209-
? `${pad(GlyphChars.Dash, 2, 2)}Last fetched ${Repository.formatLastFetched(lastFetched, false)}`
210-
: ''
209+
lastFetched ? `${pad(GlyphChars.Dash, 2, 2)}Last fetched ${formatLastFetched(lastFetched, false)}` : ''
211210
}${this.repo.formattedName ? `\\\n${this.uri.repoPath}` : ''}`;
212211
let workingStatus = '';
213212

@@ -300,7 +299,7 @@ export class RepositoryNode extends SubscribeableViewNode<'repository', ViewsWit
300299
item.id = this.id;
301300
item.contextValue = contextValue;
302301
item.description = `${description ?? ''}${
303-
lastFetched ? `${pad(GlyphChars.Dot, 1, 1)}Last fetched ${Repository.formatLastFetched(lastFetched)}` : ''
302+
lastFetched ? `${pad(GlyphChars.Dot, 1, 1)}Last fetched ${formatLastFetched(lastFetched)}` : ''
304303
}`;
305304
item.iconPath = getRepositoryStatusIconPath(this.view.container, this.repo, status);
306305

@@ -362,12 +361,12 @@ export class RepositoryNode extends SubscribeableViewNode<'repository', ViewsWit
362361

363362
const disposables = [weakEvent(this.repo.onDidChange, this.onRepositoryChanged, this)];
364363

365-
const interval = Repository.getLastFetchedUpdateInterval(lastFetched);
364+
const interval = getLastFetchedUpdateInterval(lastFetched);
366365
if (lastFetched !== 0 && interval > 0) {
367366
disposables.push(
368367
disposableInterval(() => {
369368
// Check if the interval should change, and if so, reset it
370-
if (interval !== Repository.getLastFetchedUpdateInterval(lastFetched)) {
369+
if (interval !== getLastFetchedUpdateInterval(lastFetched)) {
371370
void this.resetSubscription();
372371
}
373372

src/webviews/plus/graph/graphWebview.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,13 @@ import type {
8080
} from '../../../git/models/reference';
8181
import { createReference, getReferenceFromBranch, isGitReference } from '../../../git/models/reference.utils';
8282
import { RemoteResourceType } from '../../../git/models/remoteResource';
83-
import type { RepositoryChangeEvent, RepositoryFileSystemChangeEvent } from '../../../git/models/repository';
84-
import {
85-
isRepository,
83+
import type {
8684
Repository,
87-
RepositoryChange,
88-
RepositoryChangeComparisonMode,
85+
RepositoryChangeEvent,
86+
RepositoryFileSystemChangeEvent,
8987
} from '../../../git/models/repository';
88+
import { isRepository, RepositoryChange, RepositoryChangeComparisonMode } from '../../../git/models/repository';
89+
import { getLastFetchedUpdateInterval } from '../../../git/models/repository.utils';
9090
import { uncommitted } from '../../../git/models/revision';
9191
import { isSha, shortenRevision } from '../../../git/models/revision.utils';
9292
import { getWorktreesByBranch } from '../../../git/models/worktree.utils';
@@ -2064,12 +2064,12 @@ export class GraphWebviewProvider implements WebviewProvider<State, State, Graph
20642064

20652065
const lastFetched = (await repo.getLastFetched()) ?? 0;
20662066

2067-
let interval = Repository.getLastFetchedUpdateInterval(lastFetched);
2067+
let interval = getLastFetchedUpdateInterval(lastFetched);
20682068
if (lastFetched !== 0 && interval > 0) {
20692069
this._lastFetchedDisposable = disposableInterval(() => {
20702070
// Check if the interval should change, and if so, reset it
2071-
const checkInterval = Repository.getLastFetchedUpdateInterval(lastFetched);
2072-
if (interval !== Repository.getLastFetchedUpdateInterval(lastFetched)) {
2071+
const checkInterval = getLastFetchedUpdateInterval(lastFetched);
2072+
if (interval !== getLastFetchedUpdateInterval(lastFetched)) {
20732073
interval = checkInterval;
20742074
}
20752075

0 commit comments

Comments
 (0)