Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 21 additions & 7 deletions app/privacy/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -132,14 +132,28 @@ export default function PrivacyPage() {
</p>
</section>

{/* No Deletion */}
{/* Data Deletion */}
<section>
<h2 className="text-xl font-semibold mb-3">Data Cannot Be Deleted</h2>
<p className="text-gray-600 dark:text-gray-400 leading-relaxed">
Because data is stored on a blockchain, it cannot be deleted. There is no &quot;delete my account&quot;
button because no one has the power to remove data from the blockchain. Once you post something,
it exists permanently. This is a fundamental property of blockchain technology, not a choice we made.
</p>
<h2 className="text-xl font-semibold mb-3">Data Deletion</h2>
<div className="text-gray-600 dark:text-gray-400 leading-relaxed space-y-3">
<p>
<strong>You can delete your account</strong> and all associated data from Dash Platform. Unlike traditional
blockchains, Dash Platform documents can be deleted by their owners. When you delete your account:
</p>
<ul className="list-disc list-inside space-y-1 ml-2">
<li>All your posts, likes, reposts, and replies are permanently removed</li>
<li>Your profile and avatar are deleted</li>
<li>Your follow lists, bookmarks, and blocks are removed</li>
<li>Your direct messages are deleted</li>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Blocking: Privacy policy incorrectly promises deletion of received messages

Deletion queries only documents owned by the deleting identity. Direct-message documents are owned by their senders, so messages received by this user remain controlled by the sending identities and cannot be removed by this flow. The public privacy policy must distinguish sent, user-owned messages from received messages.

Suggested change
<li>Your direct messages are deleted</li>
<li>Your sent direct messages are deleted; messages sent to you remain controlled by their senders</li>

source: ['codex']

</ul>
<div className="bg-amber-50 dark:bg-amber-950/50 border border-amber-200 dark:border-amber-800 rounded-lg p-4 mt-4">
<p className="text-amber-800 dark:text-amber-200 text-sm">
<strong>Important:</strong> While data is deleted from Dash Platform itself, third-party services such as
blockchain explorers, indexing platforms, or archive services may have copied your data before deletion.
We have no control over these external services, and they may retain historical copies of your content.
</p>
</div>
</div>
</section>

{/* Third Parties */}
Expand Down
11 changes: 6 additions & 5 deletions app/settings/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,12 @@ import * as Switch from '@radix-ui/react-switch'
import * as RadioGroup from '@radix-ui/react-radio-group'
import Link from 'next/link'
import { useRouter, useSearchParams } from 'next/navigation'
import toast from 'react-hot-toast'
import { KeyBackupSettings } from '@/components/settings/key-backup-settings'
import { BlockedUsersSettings } from '@/components/settings/blocked-users'
import { BlockListSettings } from '@/components/settings/block-list-settings'
import { useDashPayContactsModal } from '@/hooks/use-dashpay-contacts-modal'
import { useDeleteAccountModal } from '@/hooks/use-delete-account-modal'
import { DeleteAccountModal } from '@/components/settings/delete-account-modal'

type SettingsSection = 'main' | 'account' | 'contacts' | 'notifications' | 'privacy' | 'appearance' | 'about'
const VALID_SECTIONS: SettingsSection[] = ['main', 'account', 'contacts', 'notifications', 'privacy', 'appearance', 'about']
Expand Down Expand Up @@ -117,11 +118,10 @@ function SettingsPage() {
}
}

// TODO: Implement account deletion
// Delete account modal
const { open: openDeleteAccountModal } = useDeleteAccountModal()
const handleDeleteAccount = () => {
if (confirm('Are you sure you want to delete your account? This action cannot be undone.')) {
toast.error('Account deletion is not yet implemented')
}
openDeleteAccountModal()
}

const renderMainSettings = () => (
Expand Down Expand Up @@ -529,6 +529,7 @@ function SettingsPage() {

return (
<div className="min-h-[calc(100vh-40px)] flex">
<DeleteAccountModal />
<Sidebar />

<div className="flex-1 flex justify-center min-w-0">
Expand Down
Loading
Loading