Compare commits

...
6 Commits
Author SHA1 Message Date
Belupeti c7d52b2e39 Merge pull request 'add review system' (#3) from dev into master
Build / Build-image (push) Successful in 1m8s
Reviewed-on: #3
2026-08-18 19:31:57 +02:00
Belupeti 3b9fbf322f fix incorrect review return value
Build / Build-image (push) Successful in 1m9s
2026-08-18 19:25:39 +02:00
Belupeti 5f72174d39 add some pampár protection
Build / Build-image (push) Successful in 1m11s
2026-08-18 18:38:08 +02:00
Belupeti f1fbd8b782 actually fix desync
Build / Build-image (push) Successful in 1m16s
2026-08-18 14:52:01 +02:00
Belupeti db91e3ba86 some frontend sync changes
Build / Build-image (push) Successful in 1m33s
2026-08-18 14:14:05 +02:00
Belupeti 1f8f3a663e add like/dislike system
Build / Build-image (push) Successful in 1m16s
2026-08-18 14:01:38 +02:00
6 changed files with 144 additions and 18 deletions
+51 -17
View File
@@ -31,12 +31,13 @@ class TlaController extends Controller
public function session_flush(Request $request, string $language)
{
$session = $request->session();
if ($session->get('date', NULL) != date('Y-m-d'))
if ($session->get('date-'.$language, NULL) != date('Y-m-d'))
{
$session->forget('guesses-'.$language);
$session->forget('tla');
$session->forget('correct');
$session->put('date', date('Y-m-d'));
$session->forget('guesses--'.$language);
$session->forget('tla-'.$language);
$session->forget('correct-'.$language);
$session->forget('review-'.$language);
$session->put('date-'.$language, date('Y-m-d'));
}
}
@@ -52,11 +53,11 @@ class TlaController extends Controller
return response()->json([
'hint' => $tla->hint,
'guesses' => $session->get('guesses-'.$language, []),
'date' => $session->get('date'),
'tla' => $session->get('tla') == $tla->acronym ? $tla->acronym : NULL,
'context' => $session->get('tla') == $tla->acronym ? $tla->context : NULL,
'correct' => $session->get('correct'),
'guesses' => $session->get('guesses--'.$language, []),
'date' => $session->get('date--'.$language),
'tla' => $session->get('tla-'.$language) == $tla->acronym ? $tla->acronym : NULL,
'context' => $session->get('tla-'.$language) == $tla->acronym ? $tla->context : NULL,
'correct' => $session->get('correct-'.$language),
]);
}
@@ -106,21 +107,21 @@ class TlaController extends Controller
$score += $guess_array[$i + 3];
}
$session->push('guesses-'.$language, $guess_array);
$guesses = $session->get('guesses-'.$language, NULL);
$session->push('guesses--'.$language, $guess_array);
$guesses = $session->get('guesses--'.$language, NULL);
if ($score == 12 || count($guesses) == env('MAX_GUESSES', 10)) {
$session->put('tla', $tla_object->acronym);
if ($score == 12) $session->put('correct', true);
$session->put('tla-'.$language, $tla_object->acronym);
if ($score == 12) $session->put('correct-'.$language, true);
}
return response()->json([
'guesses' => $guesses,
'date' => $session->get('date'),
'tla' => $session->get('tla') == $tla_object->acronym ? $tla_object->acronym : NULL,
'context' => $session->get('tla') == $tla_object->acronym ? $tla_object->context : NULL,
'tla' => $session->get('tla-'.$language) == $tla_object->acronym ? $tla_object->acronym : NULL,
'context' => $session->get('tla-'.$language) == $tla_object->acronym ? $tla_object->context : NULL,
'score' => $score,
'correct' => $session->get('correct'),
'correct' => $session->get('correct-'.$language),
]);
}
@@ -128,6 +129,39 @@ class TlaController extends Controller
}
public function review(Request $request, String $language, int $type) {
$session = $request->session();
if ($session->get('correct-'.$language) == true) {
$current = $session->get('review-'.$language);
$tla = Tla::GetCurrentTla($language);
if ($type != 2) {
if ($current == $type) {
if ($current == 1) $tla->likes--;
else if ($current == -1) $tla->dislikes--;
$type = 2;
} else {
if ($current == 1) $tla->likes--;
else if ($current == -1) $tla->dislikes--;
if ($type == 1) $tla->likes++;
else if ($type == -1) $tla->dislikes++;
}
$tla->save();
$session->put('review-'.$language, $type);
} else $type = $current;
return response()->json([
'likes' => $tla->likes,
'dislikes' => $tla->dislikes,
'current' => $type,
]);
}
else return response(null, 403);
}
public function update(Request $request, Tla $tla): RedirectResponse
{
$request->validate([
+1 -1
View File
@@ -11,7 +11,7 @@ class Tla extends Model
use HasFactory;
protected $fillable = ['acronym', 'hint', 'language', 'used', 'context'];
protected $fillable = ['acronym', 'hint', 'language', 'used', 'context', 'likes', 'dislikes'];
public static function GetCurrentTla( string $language ) : Tla {
$tla = Tla::where('used', date("Y-m-d"))
@@ -0,0 +1,27 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('tla', function (Blueprint $table) {
$table->integer('likes')->default(0)->after('context');
$table->integer('dislikes')->default(0)->after('likes');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
//
}
};
+61
View File
@@ -0,0 +1,61 @@
<template>
<h3>Did you enjoy todays TLA?</h3>
<div>
<UButton @click="makeRequest(1)" class="rounded-l-full" :icon="current == 1 ? 'mdi:thumbs-up' : 'mdi:thumbs-up-outline'" size="md" color="neutral" variant="outline">{{ likes }}</UButton>
<UButton @click="makeRequest(-1)" class="rounded-r-full" :icon="current == -1 ? 'mdi:thumbs-down' : 'mdi:thumbs-down-outline'" size="md" color="neutral" variant="outline">{{ dislikes }}</UButton>
</div>
</template>
<style lang="css" scoped>
</style>
<script lang="ts">
import axios from 'axios';
export default {
data() {
return {
likes: 0,
dislikes: 0,
current: 0,
}
},
mounted() {
this.makeRequest(2)
},
methods: {
makeRequest(type: number) {
if (type != 0){
if (this.current == type){
this.current = 0;
if (type == 1) this.likes--;
else if (type == -1) this.dislikes--;
}
else
{
if (type == 1) {
this.likes++;
if (this.current == -1) this.dislikes--;
}
else if (type == -1) {
this.dislikes++;
if (this.current == 1) this.likes--;
}
this.current = type;
}
}
axios
.get("/api/review/en/"+type)
.then(response => {
this.likes = response.data.likes;
this.dislikes = response.data.dislikes;
this.current = response.data.current;
});
}
}
}
</script>
+3
View File
@@ -2,6 +2,7 @@
import axios from 'axios';
import GuessWord from '../components/GuessWord.vue';
import Modal from '../components/Modal.vue';
import Review from '../components/Review.vue';
</script>
<script lang="ts">
@@ -115,9 +116,11 @@
</template>
<template v-if="!correct && guesses.length >= maxGuesses">
You ran out of guesses. Todays TLA was <b>{{ tla }}</b>
<Review/>
</template>
<template v-if="correct">
You completed todays TLAdle! Todays TLA was <b>{{ tla }}</b>
<Review/>
</template>
<h3>Guesses left: {{ maxGuesses - guesses.length }}</h3>
+1
View File
@@ -11,4 +11,5 @@ Route::middleware('web')->group(function () {
Route::get('fetch_dev', function() {
return response()->json(['dev' => env('DEV_MESSAGE', false)]);
});
Route::get('review/{language}/{type}', [\App\Http\Controllers\TlaController::class, 'review']);
});