Destroy cards that are considered "learned"
The goal isn't to hoard unlimited storage space on the user's device, just use the space for as long as necessary to learn a word
This commit is contained in:
		
							parent
							
								
									51122cceef
								
							
						
					
					
						commit
						3edef0736c
					
				@ -73,11 +73,11 @@ export async function addCategory(category: Category) {
 | 
			
		||||
export async function removeExpression(expression_id: number) {
 | 
			
		||||
  return await database.transaction(
 | 
			
		||||
    "rw",
 | 
			
		||||
    database.expression_sets,
 | 
			
		||||
    database.expressions,
 | 
			
		||||
    database.expression_to_category,
 | 
			
		||||
    database.expression_to_expression_set,
 | 
			
		||||
    () => {
 | 
			
		||||
      database.expression_sets.where({ id: expression_id }).delete();
 | 
			
		||||
      database.expressions.where({ id: expression_id }).delete();
 | 
			
		||||
      database.expression_to_category.where({ expression_id }).delete();
 | 
			
		||||
      database.expression_to_expression_set.where({ expression_id }).delete();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -1,22 +1,30 @@
 | 
			
		||||
import { useCallback } from "react";
 | 
			
		||||
import { useExpressionSetQueryId } from "../../hooks";
 | 
			
		||||
import { assignExpressionToSet } from "../../model";
 | 
			
		||||
 | 
			
		||||
// TODO fix promotion algorithm so it uses a destination expression_set_id
 | 
			
		||||
import { assignExpressionToSet, database, removeExpression } from "../../model";
 | 
			
		||||
 | 
			
		||||
export interface PromoteExpressionButtonProps {
 | 
			
		||||
  expression_id: number;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// "Promote" action will destroy the card if it's learning level is already at top level
 | 
			
		||||
// TODO notify user of card deletion
 | 
			
		||||
 | 
			
		||||
export function PromoteExpressionButton({
 | 
			
		||||
  expression_id,
 | 
			
		||||
}: PromoteExpressionButtonProps) {
 | 
			
		||||
  const expression_set_id = useExpressionSetQueryId();
 | 
			
		||||
  const handleClick = useCallback(() => {
 | 
			
		||||
    assignExpressionToSet({
 | 
			
		||||
      expression_id,
 | 
			
		||||
      expression_set_id: expression_set_id + 1,
 | 
			
		||||
    });
 | 
			
		||||
  const handleClick = useCallback(async () => {
 | 
			
		||||
    const existing_next_level = await database.expression_sets
 | 
			
		||||
      .where({ id: expression_set_id + 1 })
 | 
			
		||||
      .first();
 | 
			
		||||
    if (existing_next_level) {
 | 
			
		||||
      assignExpressionToSet({
 | 
			
		||||
        expression_id,
 | 
			
		||||
        expression_set_id: expression_set_id + 1,
 | 
			
		||||
      });
 | 
			
		||||
    } else {
 | 
			
		||||
      removeExpression(expression_id);
 | 
			
		||||
    }
 | 
			
		||||
  }, [expression_id, expression_set_id]);
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user