fix(app): show only workspace commits in Changes
Keep base history out of the commit list and explain the empty workspace state.
This commit is contained in:
@@ -3,6 +3,7 @@ import { Pressable, Text, View, type PressableStateCallbackType } from "react-na
|
||||
import { StyleSheet } from "react-native-unistyles";
|
||||
import { ThemedChevron, chevronColorMapping } from "@/git/themed-chevron";
|
||||
import type { ClassifiedCheckoutCommit } from "@/git/use-commits-query";
|
||||
import { CODE_SURFACE_DATASET } from "@/styles/code-surface";
|
||||
import { formatTimeAgo } from "@/utils/time";
|
||||
import { CommitGraphNode } from "./commit-graph-node";
|
||||
|
||||
@@ -41,7 +42,7 @@ export const CommitRow = memo(function CommitRow({
|
||||
>
|
||||
<CommitGraphNode commit={commit} isFirst={isFirst} isLast={isLast} />
|
||||
<View style={styles.commitDetails}>
|
||||
<Text style={styles.shortSha} numberOfLines={1}>
|
||||
<Text dataSet={CODE_SURFACE_DATASET} style={styles.shortSha} numberOfLines={1}>
|
||||
{commit.shortSha}
|
||||
</Text>
|
||||
<Text style={styles.subject} numberOfLines={1}>
|
||||
@@ -79,7 +80,7 @@ const styles = StyleSheet.create((theme) => ({
|
||||
fontSize: theme.fontSize.xs,
|
||||
fontFamily: theme.fontFamily.mono,
|
||||
color: theme.colors.foregroundMuted,
|
||||
width: theme.spacing[16],
|
||||
width: 70,
|
||||
flexShrink: 0,
|
||||
},
|
||||
subject: {
|
||||
|
||||
@@ -6,6 +6,7 @@ import { useRetainedPanelActive } from "@/components/retained-panel";
|
||||
import { useChangesPreferences } from "@/hooks/use-changes-preferences";
|
||||
import { useCheckoutCommitsQuery, type CheckoutCommitsQueryResult } from "@/git/use-commits-query";
|
||||
import { ThemedChevron, chevronColorMapping } from "@/git/themed-chevron";
|
||||
import { normalizeBranchOptionName } from "@/utils/branch-suggestions";
|
||||
import { CommitRow } from "./commit-row";
|
||||
|
||||
interface CommitsSectionProps {
|
||||
@@ -14,8 +15,6 @@ interface CommitsSectionProps {
|
||||
onCommitPress: (sha: string) => void;
|
||||
}
|
||||
|
||||
const SKELETON_ROW_KEYS = ["commit-skeleton-1", "commit-skeleton-2", "commit-skeleton-3"];
|
||||
|
||||
function CommitsSectionSkeleton() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
@@ -25,15 +24,13 @@ function CommitsSectionSkeleton() {
|
||||
style={styles.skeleton}
|
||||
testID="commits-section-skeleton"
|
||||
>
|
||||
{SKELETON_ROW_KEYS.map((key) => (
|
||||
<View key={key} style={styles.skeletonRow}>
|
||||
<View style={styles.skeletonDot} />
|
||||
<View style={styles.skeletonSha} />
|
||||
<View style={styles.skeletonSubject} />
|
||||
<View style={styles.skeletonTimestamp} />
|
||||
<View style={styles.skeletonCaret} />
|
||||
</View>
|
||||
))}
|
||||
<View style={styles.skeletonRow}>
|
||||
<View style={styles.skeletonDot} />
|
||||
<View style={styles.skeletonSha} />
|
||||
<View style={styles.skeletonSubject} />
|
||||
<View style={styles.skeletonTimestamp} />
|
||||
<View style={styles.skeletonCaret} />
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
@@ -58,21 +55,25 @@ function CommitsSectionContent({
|
||||
if (query.status !== "loaded") {
|
||||
return <CommitsSectionSkeleton />;
|
||||
}
|
||||
if (query.data.commits.length === 0) {
|
||||
const workspaceCommits = query.data.commits.filter((commit) => !commit.isOnBase);
|
||||
const baseRef = normalizeBranchOptionName(query.data.baseRef) ?? t("workspace.git.diff.base");
|
||||
if (workspaceCommits.length === 0) {
|
||||
return (
|
||||
<Text style={styles.emptyRow} testID="commits-section-empty">
|
||||
{t("workspace.git.diff.commits.empty")}
|
||||
</Text>
|
||||
<View style={styles.noWorkspaceCommitsRow} testID="commits-section-no-workspace-commits">
|
||||
<Text style={styles.noWorkspaceCommitsText}>
|
||||
{t("workspace.git.diff.commits.noneAhead", { baseRef })}
|
||||
</Text>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
return (
|
||||
<View style={styles.list}>
|
||||
{query.data.commits.map((commit, index) => (
|
||||
{workspaceCommits.map((commit, index) => (
|
||||
<CommitRow
|
||||
key={commit.sha}
|
||||
commit={commit}
|
||||
isFirst={index === 0}
|
||||
isLast={index === query.data.commits.length - 1}
|
||||
isLast={index === workspaceCommits.length - 1}
|
||||
now={now}
|
||||
onCommitPress={onCommitPress}
|
||||
/>
|
||||
@@ -193,12 +194,17 @@ const styles = StyleSheet.create((theme) => ({
|
||||
list: {
|
||||
paddingBottom: theme.spacing[1],
|
||||
},
|
||||
emptyRow: {
|
||||
fontSize: theme.fontSize.xs,
|
||||
color: theme.colors.foregroundMuted,
|
||||
noWorkspaceCommitsRow: {
|
||||
flexDirection: "row",
|
||||
alignItems: "center",
|
||||
paddingLeft: theme.spacing[2],
|
||||
paddingRight: theme.spacing[3],
|
||||
paddingVertical: theme.spacing[2],
|
||||
paddingTop: theme.spacing[1],
|
||||
paddingBottom: theme.spacing[2],
|
||||
},
|
||||
noWorkspaceCommitsText: {
|
||||
fontSize: theme.fontSize.xs,
|
||||
color: theme.colors.foregroundMuted,
|
||||
},
|
||||
errorRow: {
|
||||
fontSize: theme.fontSize.xs,
|
||||
|
||||
Reference in New Issue
Block a user